嗨,我在django项目中运行覆盖率测试时遇到问题,出现操作错误,表明数据库已经存在,我尝试使用假迁移
python manage.py migrate <appname> --fake
这是我看到的错误消息
File "c:\users\ziad hossain\appdata\local\programs\python\python37\lib\site-packages\django\db\backends\sqlite3\base.py", line 381, in execute
return Database.Cursor.execute(self, query)
django.db.utils.OperationalError: table "driver_driver_customer" already exists
答案 0 :(得分:3)
如果您已经在数据库中创建了表,则可以在使用此命令之前运行python manage.py migrate --fake <appname>
,我建议您检查Django版本。您可以使用python manage.py migrate --fake-initial
。对于小于等于1.8的版本,请参考https://docs.djangoproject.com/en/1.8/topics/migrations/以获取更多版本,您会在文档https://docs.djangoproject.com/en/2.2/topics/migrations/中发现--fake缺失。
答案 1 :(得分:0)
上述的最佳解决方案是浏览migrations文件夹并检查django为什么试图创建一个已经存在的模型。
在这些.py文件的表名上执行grep。检查是否存在类似的内容。
migrations.CreateModel(
name='driver_driver_customer',
fields=[
删除包含上述内容的文件(包括相应的.pyc文件)。现在进行makemigrations并检查它是否显示类似
- Create Table driver_driver_customer
如果不应用迁移。
如果同样的问题仍然存在,请备份迁移文件夹,并删除除 __ init __。py 和 __ init __。pyc 之外的所有文件。现在应用迁移,它应该可以工作。