Error 1005 al añadir una restricción de clave externa en la tabla de MySQL
-
26-09-2019 - |
Pregunta
Tengo un problema al actualizar una aplicación de Django y MySQL con el sur.
He intentado hacer una actualización basada en SQL con el código generado por el comando Django sqlall y tengo un problema similar.
Este es el código 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`);
se produce un error al añadir la restricción FK:
ERROR 1005 (HY000): Can't create table 'apidev_mnl.#sql-106e_632b00a' (errno: 150)
¿Alguien tiene una idea?
Actualización:. Los valores por defecto donde faltan pero incluso si añado el valor por defecto = '' en el modelo de Django, la creación de claves externas no
Gracias por su ayuda
Solución 3
Finalmente solucionado el problema gracias a una solución. La obra bien alter en mi máquina dev, mientras que se produce un error en el host. No he encontrado la razón, pero lo logro darlo a trabajar con la exportación, la migración en mi máquina dev y volver a importar.
Otros consejos
Parece que están tratando de agregar una restricción con un símbolo / nombre que ya existe.
ALTER TABLE `programmations_concert` ADD CONSTRAINT `basis_support_id_refs_id_1e4ed8d7` FOREIGN KEY (`basis_support_id`) REFERENCES `programmations_basissupport` (`id`);
se puede cambiar a:
ALTER TABLE `programmations_concert` ADD FOREIGN KEY (`basis_support_id`) REFERENCES `programmations_basissupport` (`id`);
No era el mismo problema. Y, finalmente, me parece que en el campo de la tabla referenciada fue "sin firmar", pero en el cuadro de correspondencia -. No sin signo