为什么会出现此错误“django.db.utils.OperationalError:(1050,”表'someTable'已存在“)”

时间:2016-05-19 06:45:28

标签: python django

我收到类似django.db.utils.OperationalError: (1050, "Table 'someTable' already exists")的错误 我想知道这种类型错误的原因。 我在termial上运行了以下命令

1. python manage.py makemigration app
2. python manage.py migrate app

运行迁移时,然后出现上述错误。 我通过运行

解决了我的问题
python manage.py migrate --fake app

但我想知道为什么我会收到此错误,以及--fake app如何解决我的问题。感谢

2 个答案:

答案 0 :(得分:2)

表' someTable'已存在于您的数据库中 - 或者是因为它是之前调用./manage.py syncdb创建的,或者是因为您手动创建了它(或者之前使用过South并且正在切换到Django> = 1.7) - 而您显然没有任何现有的django(非南方)迁移,所以makemigration认为必须创建该表(正确的声音,对于从头开始安装你的应用程序的人来说确实如此)。

使用--fake标志告诉migrate命令只记录已经应用的迁移而没有有效地应用它,这就是这个标志的重点:当你的应用已经已安装(数据库表等)而没有迁移,您希望开始使用迁移。

答案 1 :(得分:1)

此问题表示在没有Django迁移的情况下创建了someTable,或者删除了django_migrations中有关迁移的记录。 --fakedjango_migrations中添加了有关迁移的记录,但未应用实际迁移。

django_migrations中的记录包含有关迁移的信息:应用标签,迁移名称和应用迁移的日期。