sql >> Database >  >> RDS >> Mysql

ERRO 1215. MySql InnoDB

Ik heb je tafelcreatie getest.

Toen kreeg ik meer informatie over de externe sleutelfout:

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.
...

Ik zie het probleem:je hebt een samengestelde primaire sleutel in city op kolommen (Name, Code) . Hiervoor moet u één . maken externe sleutelbeperking die verwijst naar beide kolommen van de primaire sleutel van de ouder.

Zoals dit:

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

Declareer geen beperking voor elke kolom — declareer één beperking die verwijst naar beide kolommen van de sleutel.




  1. Hoe te modelleren voor eenvoudig databaseonderhoud

  2. Hoe gebruik je een array met waarden uit PHP in de 'IN'-clausule van de mysql-query?

  3. Een API aanroepen vanuit de opgeslagen procedure van SQL Server

  4. Array van ints doorgeven aan T-SQL opgeslagen proc via entiteitsframework