我收到类似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
如何解决我的问题。感谢
答案 0 :(得分:2)
表' someTable'已存在于您的数据库中 - 或者是因为它是之前调用./manage.py syncdb
创建的,或者是因为您手动创建了它(或者之前使用过South并且正在切换到Django> = 1.7) - 而您显然没有任何现有的django(非南方)迁移,所以makemigration
认为必须创建该表(正确的声音,对于从头开始安装你的应用程序的人来说确实如此)。
使用--fake
标志告诉migrate
命令只记录已经应用的迁移而没有有效地应用它,这就是这个标志的重点:当你的应用已经已安装(数据库表等)而没有迁移,您希望开始使用迁移。
答案 1 :(得分:1)
此问题表示在没有Django迁移的情况下创建了someTable
,或者删除了django_migrations
中有关迁移的记录。 --fake
在django_migrations
中添加了有关迁移的记录,但未应用实际迁移。
django_migrations
中的记录包含有关迁移的信息:应用标签,迁移名称和应用迁移的日期。