Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

ERRO 1215. MySql InnoDB


Eu testei sua criação de tabela.

Então obtive mais informações sobre o erro de chave estrangeira:
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.
...

Eu vejo o problema:você tem uma chave primária composta em city nas colunas (Name, Code) . Para isso, você deve criar um restrição de chave estrangeira referenciando ambos colunas da chave primária do pai.

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

Não declare uma restrição para cada coluna — declare uma restrição que faça referência a ambas as colunas da chave.