Mysql
 sql >> Baza danych >  >> RDS >> Mysql

mysql errno:150 „Ograniczenie klucza obcego jest nieprawidłowo utworzone”- MariaDB

Po pierwsze, w twoim kodzie jest wiele błędów, które sprawiają, że testowanie jest nieco kłopotliwe. Po drugie, upewnij się, że używasz tego samego zestawu znaków w obu tabelach, zmieniłem message_map na utf8:

DROP TABLE message_map;
CREATE TABLE message_map (
  message_from varchar(15) NOT NULL,
  message_id varchar(15) NOT NULL,
  message_to varchar(15) NOT NULL,
  message_status bit(1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ALTER TABLE message_map
    ADD PRIMARY KEY (message_from,message_id,message_to),
    ADD KEY FK_ij6tystusydqijqp8lgoigo1c (message_id);

ALTER TABLE message_map 
    ADD CONSTRAINT FK_MSG_MAP_USER
    FOREIGN KEY (message_from)
        REFERENCES user (USER_ID)
            ON DELETE CASCADE
            ON UPDATE CASCADE,
    ADD CONSTRAINT FK_MSG_MAP_USER_TO
    FOREIGN KEY (message_to)
        REFERENCES user (USER_ID)
            ON DELETE CASCADE
            ON UPDATE CASCADE;

Usunąłem demo z definicji klucza obcego.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL InnoDB - Zdezorientowany transakcjami

  2. Wstaw listę Pythona (JSON lub inną) do bazy danych MySQL

  3. Najlepsze narzędzie do dostrajania wydajności MySQL?

  4. Zapytanie SQL wyszukujące wiersze spełniające wymagania Kolumna1 <=X <=Kolumna2 przebiega bardzo wolno

  5. Zarządzaj MySQL za pomocą phpMyAdmin na Ubuntu 9.10 (Karmic)