sql >> Databáze >  >> RDS >> Mysql

ERRO 1215. MySql InnoDB

Testoval jsem vaši tvorbu tabulky.

Pak jsem získal další informace o chybě cizího klíče:

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

Vidím problém:v city máte složený primární klíč ve sloupcích (Name, Code) . K tomu musíte vytvořit jednu omezení cizího klíče odkazující na obě sloupce primárního klíče rodiče.

Takhle:

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

Nedeklarujte omezení pro každý sloupec – deklarujte jedno omezení, které odkazuje na oba sloupce klíče.




  1. Použití PIVOT v SQL Server 2008

  2. Maximální skutečný prostor ve varbinary(max) na serveru SQL Server

  3. Výkon MySQL počítání řádků

  4. VARCHAR vs TEXT v MySQL