Mysql
 sql >> Database >  >> RDS >> Mysql

ERRORE 1215. MySql InnoDB

Ho testato la creazione della tua tabella.

Quindi ho ricevuto maggiori informazioni sull'errore di chiave esterna:

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

Vedo il problema:hai una chiave primaria composta in city nelle colonne (Name, Code) . Per questo, devi crearne uno vincolo di chiave esterna che fa riferimento a entrambi colonne della chiave primaria del genitore.

In questo modo:

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

Non dichiarare un vincolo per ogni colonna:dichiara un vincolo che fa riferimento a entrambe le colonne della chiave.