我有一个遗留的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
执行的最后一个命令没有错误。所以我的问题是,在执行数据迁移后,表格是否应该设置明确的约束?
答案 0 :(得分:0)
当您执行虚假迁移时,这意味着迁移在数据库中伪造.South假定迁移(您的0001_initial.py文件中的迁移)已完成。使用--fake迁移时,不会发生数据库更改。您收到表存在错误,因为您将要创建的表如何存在于数据库中。可能是您运行syncdb时创建的表。