运行覆盖率测试时出现“操作错误”

时间:2019-08-27 09:42:44

标签: python html django

嗨,我在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

2 个答案:

答案 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为什么试图创建一个已经存在的模型。

  1. 首先转到迁移目录,例如 myapp / migrations /
  2. 在这些.py文件的表名上执行grep。检查是否存在类似的内容。

        migrations.CreateModel(
               name='driver_driver_customer',
               fields=[
    
  3. 删除包含上述内容的文件(包括相应的.pyc文件)。现在进行makemigrations并检查它是否显示类似

              - Create Table driver_driver_customer
    

    如果不应用迁移。

  4. 如果同样的问题仍然存在,请备份迁移文件夹,并删除除 __ init __。py __ init __。pyc 之外的所有文件。现在应用迁移,它应该可以工作。