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

ERRO 1215. MySQL InnoDB

Przetestowałem twoją kreację stołu.

Następnie otrzymałem więcej informacji o błędzie klucza obcego:

mysql> show engine innodb status\G

------------------------
LATEST FOREIGN KEY ERROR
------------------------
2018-02-20 14:51:33 700002d90000 Error in foreign key constraint of table calls/called:

    FOREIGN KEY (`Code`)
    REFERENCES `calls`.`city` (`Code`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `Number`
    FOREIGN KEY (`Number`)
    REFERENCES `calls`.`subscriber` (`Number`)
    ON DELETE CASCADE
    ON UPDATE CASCADE):
Cannot find an index in the referenced table where the
referenced columns appear as the first columns, or column types
in the table and the referenced table do not match for constraint.
...

Widzę problem:masz złożony klucz podstawowy w city w kolumnach (Name, Code) . W tym celu musisz utworzyć jeden ograniczenie klucza obcego odwołujące się do obu kolumny klucza podstawowego rodzica.

Tak:

CONSTRAINT `Name`
FOREIGN KEY (`Name`, `Code`)
REFERENCES `calls`.`city` (`Name`, `Code`)
ON DELETE CASCADE
ON UPDATE CASCADE

Nie deklaruj ograniczenia dla każdej kolumny — zadeklaruj jedno ograniczenie, które odwołuje się do obu kolumn klucza.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zaplanować procedurę składowaną w MySQL

  2. Kolejność Mysql według określonych wartości ID

  3. Jak porównywać wartości zerowe w MySQL

  4. MYSQL WSTAW lub AKTUALIZUJ JEŻELI

  5. Widelec czy nie widelec?