繁体   English   中英

在MySQL表上添加外键约束时出现错误1005

[英]Error 1005 when adding a foreign key constraint on mysql table

用南方升级django和mysql应用程序时出现问题。

我试图用django sqlall命令生成的代码进行基于sql的升级,但我遇到类似的问题。

这是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模型中添加了default ='',外键的创建也会失败。

谢谢你的帮助

看起来您正在尝试添加具有已经存在的符号/名称的约束。

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`);

有同样的问题。 最后,我发现在引用表中字段是“未签名”,但在引用表中-不是未签名。

由于解决方法,我终于解决了该问题。 alter在我的dev机器上可以正常运行,而在主机上却无法运行。 我没有找到原因,但是我通过导出,在我的开发机上迁移并重新导入来使其成功运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM