Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django:迁移表';论坛用户';已经存在_Django_Django South_Migrate - Fatal编程技术网

Django:迁移表';论坛用户';已经存在

Django:迁移表';论坛用户';已经存在,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更改之

我已经更改了Django模型,并使用Django
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。。。
  • 确保django表与当前数据库表完全匹配——如果您计划添加或删除列,请将它们注释掉
  • 运行python manage.py schemamigration myapp——initial
  • 运行python manage.py migrate myapp--false
  • 对django模型进行更改
  • 运行python manage.py schemamigration myapp--auto
  • 运行python manage.py迁移myapp
  • 更新 注意:django 1.7+版本的迁移和south不再使用

    只有两个命令值得注意

    • manage.py makemigrations(句柄--初始)
    • manage.py迁移

    作者与南方同一作者,众筹。转到django。

    我刚刚在本地修复了一个重复的表问题,并希望记录我的工作流程以帮助其他人

    成功的关键是在添加新模型之前创建一个
    --empty
    迁移。流程:

    • 合并到另一个人的工作中,排除了我在本地拥有的模型的信息
    • 正常
      schemamigration--auto
      再次添加表/模型,导致“已存在错误”
    • 通过注释新模型并通过
      clear运行空迁移来解决;python manage.py schemamigration--空APPNAME迁移\u文件\u名称
      。这将创建模型状态的“声明”,而不使用向前/向后命令。100%确保模型(python文件)和数据库的当前状态是同步的!!!此最新迁移将用于创建差异以正确迁移(下一步)
    • 取消对新模型的注释并运行
      clear;python manage.py schemamigration APPNAME--auto
      创建真实和所需的差分关闭(使用刚刚创建的
      --empty
      迁移)。新迁移将具有适合新模型的向前/向后命令。回顾
    • 清除结束;python manage.py迁移
    吸取的教训是,
    --auto
    查看最后一个APP+迁移文件以创建前向/后向差异。如果最后一次迁移在字典中没有您在DB中的模型,则将再次创建该迁移,从而导致“已存在”错误。可以把字典看作是Django和DB之间的一份合同,声明“一切都应该是这样的”。迁移可以包括创建重复表的命令,并且仅在“migrate”命令期间公开


    以上信息应该可以解决这个问题。部分是为了帮助人们,同时也是为了在我做傻事时进行检查。

    那么django south试图创建的表已经存在,并且与数据库的状态不匹配。如果这是您第一次迁移,请记住,在进行架构迁移更改之前,必须设置初始状态和
    migrate app--fake
    以将数据库与南部数据库状态匹配如何设置初始状态?这值得更多的投票,有价值的信息,确实很有帮助。在阅读了多篇教程后,你的答案帮助我解决了问题。非常感谢。