Ошибка 1005 При добавлении ограничения внешнего ключа на MySQL

StackOverflow https://stackoverflow.com/questions/2818442

Вопрос

У меня проблема при обновлении приложения 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`);

Была такая же проблема. И, наконец, я обнаруживаю, что на ссылке настольное поле было «без знака», но в ссылке на стол - не без подписания.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top