Django South - 不应该添加外键&数据库的独特关系?

时间:2013-07-18 22:57:27

标签: django django-models django-south

我有一个遗留的MySQL数据库,用作Django webapp的基础。它最初将MyISAM引擎用于所有表,但由于外键要求,我将所有表更改为InnoDB,并将Foreign Key和Unique字段添加到相关模型中。

我很快就会将此开发数据库导出到生产服务器,因此我使用South将数据模型迁移到数据库。但是,我可以看到没有表在表字段本身中具有显式的PK,FK和唯一约束,但它们显示在初始迁移脚本生成的0001_initial.py文件中。

我通过

执行了迁移
./manage.py schemamigration app --initial
./manage.py migrate app

Received Table Exists error, reran with --fake flag
./manage.py migrate app --fake
./manage.py migrate app

执行的最后一个命令没有错误。所以我的问题是,在执行数据迁移后,表格是否应该设置明确的约束?

1 个答案:

答案 0 :(得分:0)

当您执行虚假迁移时,这意味着迁移在数据库中伪造.South假定迁移(您的0001_initial.py文件中的迁移)已完成。使用--fake迁移时,不会发生数据库更改。您收到表存在错误,因为您将要创建的表如何存在于数据库中。可能是您运行syncdb时创建的表。