sql >> Databasteknik >  >> RDS >> Mysql

ERRO 1215. MySql InnoDB

Jag testade ditt bordskapande.

Sedan fick jag mer information om felet med den främmande nyckeln:

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

Jag ser problemet:du har en sammansatt primärnyckel i city på kolumner (Name, Code) . För detta måste du skapa en främmande nyckel-begränsning som refererar till båda kolumner i förälderns primärnyckel.

Så här:

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

Deklarera inte en begränsning för varje kolumn – deklarera en begränsning som refererar till båda kolumnerna i nyckeln.




  1. MySQL CEILING() Funktion – Runda uppåt till närmaste heltal

  2. Olaglig blandning av sammanställningar (utf8mb4_unicode_ci,IMPLICIT) och (utf8mb4_general_ci,IMPLICIT) för operation '='

  3. Ogiltig identifierare SQL

  4. PostgreSQL, konfigurera om befintlig tabell, ändra primärnyckeln till typ=seriell