Erreur 1005 lors de l'ajout d'une contrainte de clé étrangère sur la table mysql
-
26-09-2019 - |
Question
J'ai un problème lors de la mise à niveau d'une application django et mysql avec le sud.
Je l'ai essayé de faire une mise à niveau sur la base sql avec le code généré par la commande django sqlall et j'ai un problème similaire.
Voici le code sql:
CREATE TABLE `programmations_basissupport` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`value` numeric(6, 0) NOT NULL
)
ALTER TABLE `programmations_concert` ADD `basis_support_id` integer AFTER program_status_id;
ALTER TABLE `programmations_concert` ADD CONSTRAINT `basis_support_id_refs_id_1e4ed8d7` FOREIGN KEY (`basis_support_id`) REFERENCES `programmations_basissupport` (`id`);
Une erreur est déclenché lors de l'ajout de la contrainte FK:
ERROR 1005 (HY000): Can't create table 'apidev_mnl.#sql-106e_632b00a' (errno: 150)
personne-t-il une idée?
Mise à jour:. Valeurs DEFAULT où manquante, mais même si j'ajoute la valeur par défaut = « » dans le modèle django, la création de clés étrangères ne
Merci pour votre aide
La solution 3
J'ai finalement résolu le problème grâce à une solution de contournement. Les travaux alter ok sur ma machine dev pendant qu'il échoue sur l'hôte. Je ne trouve pas la raison, mais je réussis à le faire fonctionner en exportant, la migration sur ma machine dev et réimporter.
Autres conseils
On dirait que vous essayez d'ajouter une contrainte avec un symbole / nom qui existe déjà.
ALTER TABLE `programmations_concert` ADD CONSTRAINT `basis_support_id_refs_id_1e4ed8d7` FOREIGN KEY (`basis_support_id`) REFERENCES `programmations_basissupport` (`id`);
peut être modifié à:
ALTER TABLE `programmations_concert` ADD FOREIGN KEY (`basis_support_id`) REFERENCES `programmations_basissupport` (`id`);
Il y avait le même problème. Et enfin, je trouve que dans le champ de table référencée était « non signé », mais dans le tableau faisant référence -. Non non signé