【问题标题】:migrate command in south cause this error:table "model_name" already exist南迁移命令导致此错误:表“模型名称”已存在
【发布时间】:2012-02-20 09:08:36
【问题描述】:

我有一个名为 HubHub 的项目,其中包含 2 个名为 DrHubAgencyHub 的应用程序,当更改模型时,syncdb 不会更改它们,我尝试使用 south: 在settings.py:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'grappelli',
    'django.contrib.admin',
    'south',
    'AgencyHub',
    'DrHub',
)

我根据本教程运行了第一个命令来配置第一次迁移:http://south.aeracode.org/docs/tutorial/part1.html

python manage.py schemamigration DrHub --initial

第二条命令:

python manage.py migrate DrHub

但是这个命令会导致这个错误:

table "model_name" already exist

“model_name”是models.pyDrHub中的第一个模型的名称

如果您找到任何解决方案,请发布答案。

提前致谢

【问题讨论】:

    标签: python django


    【解决方案1】:

    这是因为初始迁移将为您创建数据库中的所有表。并且您有一个包含现有表的现有数据库。您可以擦除数据库然后进行迁移,或者您需要在迁移中使用 --fake 选项。文档here

    python manage.py migrate DrHub --fake
    

    【讨论】:

    • 我删除了数据库文件并再次尝试,但是迁移命令导致了这个错误:没有这样的表:south_migrationhistory
    • 如果您删除了数据库,那么您不需要使用 --fake 密钥。只需运行syncdb,然后进行迁移,它就可以正常工作了。
    • 你需要先运行syncdb。只有在 syncdb 之后,您才应该运行 migrate。 Syncdb 会创建 south_migrationhistory,然后你就可以运行 migrate。
    • tnx,你是对的,当然你的回答将我带到了这个伟大的页面:stackoverflow.com/questions/5687627/…
    【解决方案2】:

    请删除数据库表并尝试创建同步数据库。

    【讨论】:

      猜你喜欢
      • 2014-06-02
      • 2022-10-21
      • 2013-02-04
      • 2013-02-09
      • 2014-03-21
      • 2015-04-28
      • 1970-01-01
      • 2012-09-02
      • 1970-01-01
      相关资源
      最近更新 更多