Mysql
 sql >> Datenbank >  >> RDS >> Mysql

FEHLER 1215. MySql InnoDB

Ich habe Ihre Tabellenerstellung getestet.

Dann habe ich mehr Informationen über den Fremdschlüsselfehler erhalten:

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

Ich sehe das Problem:Sie haben einen zusammengesetzten Primärschlüssel in city in den Spalten (Name, Code) . Dazu müssen Sie einen erstellen Fremdschlüsseleinschränkung, die auf beide verweist Spalten des Primärschlüssels des übergeordneten Elements.

So:

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

Deklarieren Sie keine Einschränkung für jede Spalte – deklarieren Sie eine Einschränkung, die auf beide Spalten des Schlüssels verweist.