MYSQL - ne peut pas être en mesure de créer la clé étrangère
-
21-09-2019 - |
Question
Quand j'exécuter la requête en dessous renvoie une erreur,
alter table `ttis`.`users`
add constraint `FK_Role_ID` FOREIGN KEY (`ROLE_ID`) REFERENCES `roles` (`ROLE_ID`)
Erreur:
Error Code : 1005
Can't create table 'ttis.#sql-9c_8a' (errno: 150)
La solution
Jetez un oeil à ce poste: 13.6.4.4. Contraintes FOREIGN KEY et la recherche de "150". Il dit ici:
Si vous recréez une table qui était larguée, il doit avoir une définition qui est conforme à la clé étrangère contraintes faisant référence. Il doit ont les noms de la colonne de droite et types, et il doit avoir des indices sur la clés référencées, comme indiqué précédemment. Si ceux-ci ne sont pas satisfaits, les retours MySQL numéro d'erreur 1005 et fait référence à l'erreur 150 dans le message d'erreur.
Si les rapports MySQL un numéro d'erreur 1005 à partir d'une instruction CREATE TABLE, et message d'erreur se réfère à l'erreur 150, création de la table a échoué en raison d'une contrainte de clé étrangère n'a pas été correctement formé. De même, si un ALTER TABLE échoue et il se réfère à erreur 150, ce qui signifie une clé étrangère définition serait mal formé pour la table modifiée. Vous pouvez utiliser SHOW ENGINE ETAT INNODB pour afficher une explication détaillée des plus récente erreur de clé étrangère InnoDB dans la serveur.