Confira o manual do MySQL sobre restrições de chave estrangeira :
Algumas ideias:
- Melhor descartar as tabelas e criá-las com uma sintaxe bem formada.
- Certifique-se de adicionar
ENGINE=InnoDB;
para o seuCREATE TABLE
- comando. - Certifique-se de que o InnoDB esteja habilitado em seu servidor MySQL. Para verificar isso, tente este comando:
SHOW VARIABLES LIKE 'have_innodb';
- se retornar um SIM, o InnoDB está habilitado. - Verifique seu comando para maiúsculas e minúsculas em nomes de tabelas e campos.
- Marque isso não apenas na tabela que você deseja criar, mas também nas tabelas às quais as chaves estrangeiras estão se referindo.
- Certifique-se de que suas tabelas referidas estejam indexadas corretamente.