Errore 1005 durante l'aggiunta di un vincolo di chiave esterna sulla tabella mysql
-
26-09-2019 - |
Domanda
Ho un problema quando si aggiorna un'applicazione Django e mysql con il Sud.
Ho cercato di fare un aggiornamento basato su SQL con il codice generato dal comando Django sqlall e ho un problema simile.
Ecco il codice 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`);
Un errore viene generato quando si aggiunge il vincolo FK:
ERROR 1005 (HY000): Can't create table 'apidev_mnl.#sql-106e_632b00a' (errno: 150)
Qualcuno ha un'idea?
Aggiornamento:. I valori di default in cui manca, ma anche se aggiungo il default = '' nel modello Django, la creazione di chiavi esterne non riesce
Grazie per il vostro aiuto
Soluzione 3
Alla fine ho risolto il problema grazie a una soluzione. Il lavori alter ok sulla mia macchina dev, mentre non riesce sull'host. Non ho trovato il motivo, ma riesco a farlo funzionare esportando, migrando sulla mia macchina dev e reimportare.
Altri suggerimenti
Sembra che si sta tentando di aggiungere un vincolo con un simbolo / nome già esistente.
ALTER TABLE `programmations_concert` ADD CONSTRAINT `basis_support_id_refs_id_1e4ed8d7` FOREIGN KEY (`basis_support_id`) REFERENCES `programmations_basissupport` (`id`);
può essere modificata in:
ALTER TABLE `programmations_concert` ADD FOREIGN KEY (`basis_support_id`) REFERENCES `programmations_basissupport` (`id`);
Si è verificato lo stesso problema. E, infine, trovo che nel campo della tabella di riferimento è stato "non firmato", ma nella tabella riferimento -. Non unsigned