2

使用南升级 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='' ,外键的创建也会失败。

谢谢你的帮助

4

3 回答 3

3

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

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`);
于 2010-10-06T23:47:44.663 回答
2

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

于 2010-06-10T09:17:52.493 回答
1

由于解决方法,我终于解决了这个问题。更改在我的开发机器上工作正常,而在主机上失败。我没有找到原因,但我成功地通过导出、迁移到我的开发机器上并重新导入来使其工作。

于 2010-05-27T07:32:01.920 回答