[英]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.