Django:迁移表';论坛用户';已经存在
我已经更改了Django模型,并使用DjangoDjango:迁移表';论坛用户';已经存在,django,django-south,migrate,Django,Django South,Migrate,我已经更改了Django模型,并使用Djangoschemamigration更新数据库。但是,当我执行python manager.py migrate app时,它会抛出以下错误消息: _mysql_exceptions.OperationalError: (1050, "Table 'forum_user' already exists") 那么django south试图创建的表已经存在,并且与数据库的状态不匹配 如果这是您第一次迁移,请记住,在进行schemamigration更改之
schemamigration
更新数据库。但是,当我执行python manager.py migrate app
时,它会抛出以下错误消息:
_mysql_exceptions.OperationalError: (1050, "Table 'forum_user' already exists")
那么django south试图创建的表已经存在,并且与数据库的状态不匹配 如果这是您第一次迁移,请记住,在进行schemamigration更改之前,必须通过
schemamigration myapp--initial
和migrate app--fake
设置初始状态,以便将数据库与南方数据库状态相匹配
manage.py convert_to_south myapp
也可以作为一种方便的方法执行上述操作
要开始使用south。。。
- manage.py makemigrations(句柄--初始)
- manage.py迁移
作者与南方同一作者,众筹。转到django。我刚刚在本地修复了一个重复的表问题,并希望记录我的工作流程以帮助其他人 成功的关键是在添加新模型之前创建一个
--empty
迁移。流程:
- 合并到另一个人的工作中,排除了我在本地拥有的模型的信息
- 正常
再次添加表/模型,导致“已存在错误”schemamigration--auto
- 通过注释新模型并通过
。这将创建模型状态的“声明”,而不使用向前/向后命令。100%确保模型(python文件)和数据库的当前状态是同步的!!!此最新迁移将用于创建差异以正确迁移(下一步)clear运行空迁移来解决;python manage.py schemamigration--空APPNAME迁移\u文件\u名称
- 取消对新模型的注释并运行
创建真实和所需的差分关闭(使用刚刚创建的clear;python manage.py schemamigration APPNAME--auto
迁移)。新迁移将具有适合新模型的向前/向后命令。回顾--empty
- 以
清除结束;python manage.py迁移
--auto
查看最后一个APP+迁移文件以创建前向/后向差异。如果最后一次迁移在字典中没有您在DB中的模型,则将再次创建该迁移,从而导致“已存在”错误。可以把字典看作是Django和DB之间的一份合同,声明“一切都应该是这样的”。迁移可以包括创建重复表的命令,并且仅在“migrate”命令期间公开
以上信息应该可以解决这个问题。部分是为了帮助人们,同时也是为了在我做傻事时进行检查。那么django south试图创建的表已经存在,并且与数据库的状态不匹配。如果这是您第一次迁移,请记住,在进行架构迁移更改之前,必须设置初始状态和
migrate app--fake
以将数据库与南部数据库状态匹配如何设置初始状态?这值得更多的投票,有价值的信息,确实很有帮助。在阅读了多篇教程后,你的答案帮助我解决了问题。非常感谢。