Ошибка 1005 При добавлении ограничения внешнего ключа на MySQL
-
26-09-2019 - |
Вопрос
У меня проблема при обновлении приложения Django и MySQL с югом.
Я пытался сделать обновление на основе SQL с помощью кода, сгенерированного командой django sqlall, и у меня есть аналогичная проблема.
Вот код 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`);
Ошибка поднимается при добавлении ограничения FK:
ERROR 1005 (HY000): Can't create table 'apidev_mnl.#sql-106e_632b00a' (errno: 150)
У кого-нибудь есть идея?
Обновление: значения по умолчанию, где отсутствует, но даже если я добавляю по умолчанию = '' в модели django, создание внешних ключей не удается.
Спасибо за вашу помощь
Решение 3
Я наконец исправил проблему благодаря обходу. Альтер работает нормально на моей машине Dev, пока она не удается на хосте. Я не нашел причину, но мне удастся сделать его работать, экспортируя, мигрируя на моем разработке машины Dev и револируя.
Другие советы
Похоже, вы пытаетесь добавить ограничение символом / именем, которое уже существует.
ALTER TABLE `programmations_concert` ADD CONSTRAINT `basis_support_id_refs_id_1e4ed8d7` FOREIGN KEY (`basis_support_id`) REFERENCES `programmations_basissupport` (`id`);
можно изменить на:
ALTER TABLE `programmations_concert` ADD FOREIGN KEY (`basis_support_id`) REFERENCES `programmations_basissupport` (`id`);
Была такая же проблема. И, наконец, я обнаруживаю, что на ссылке настольное поле было «без знака», но в ссылке на стол - не без подписания.