升级django 2.2的django-synchro:OperationalError-没有这样的表:django_content_type“

时间:2019-07-03 17:55:55

标签: django-2.2

我正在尝试将django-synchro升级到django 2.2。我已经将项目升级到django 2.1,但现在ContentType对象存在问题

可以找到here

到django 2.1的升级版本。

(python runtests.py有效,所有测试均通过)

使用Django 2.2.3时出现错误

  

django.db.utils.OperationalError:没有这样的表:django_content_type

似乎在初始化时,迁移是在默认数据库上完成的,其余的则是在测试数据库上(在内存中)完成的。因此在其余的代码中看不到ContentType。读取models.py时发生错误 (content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE))

任何想法都将不胜感激...

我看过Django 2.2 release notes

2.2中有两个向后不兼容的更改,它们可能会导致错误:

  

TransactionTestCase序列化数据加载:初始数据   迁移现在在末尾加载到TransactionTestCase中   测试,数据库刷新后。在旧版本中,此数据是   在测试开始时加载,但这阻止了测试   --keepdb选项无法正常工作(整个测试套件结束时数据库为空)。此更改不应影响   您的测试,除非您自定义了TransactionTestCase的内部结构。

     

测试:现在,在   就像在其他后端那样,在SQLite 3.20+上进行每个TestCase测试   支持可延期的约束。这些检查并未针对   SQLite的旧版本,因为它们需要昂贵的表   在那里自省。

1 个答案:

答案 0 :(得分:0)

对我来说,这是django 2.2发行说明中的​​说明

  

如果未迁移的应用与以下内容有关系,则在SQLite上测试将失败   具有迁移功能的应用程序。自从   迁移已在Django 1.7中添加,但现在更可靠地失败了。   您会看到测试失败,并显示诸如此类表格之类的错误:   _。几个第三方应用程序都观察到了这种情况   在测试中没有迁移的模型。您必须添加迁移   对于此类模型。

我不确定该错误消息是否特别有用。但是经过一轮升级并检查了我是否没有真正的旧django模块似乎可以解决此问题。