django-2.2 - 为 django 2.2 升级 django-synchro:OperationalError - 没有这样的表:django_content_type"
问题描述
我正在尝试将 django-synchro 升级到 django 2.2。我已经将项目升级到 django 2.1 但我现在遇到了 ContentType 对象的问题
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 发行说明
2.2 中有两个向后不兼容的更改可能会导致错误:
TransactionTestCase 序列化数据加载:在数据库刷新后,测试结束时将初始数据迁移加载到 TransactionTestCase 中。在旧版本中,此数据在测试开始时加载,但这会阻止 test --keepdb 选项正常工作(整个测试套件结束时数据库为空)。除非您自定义了 TransactionTestCase 的内部结构,否则此更改不会对您的测试产生影响。
测试:现在在 SQLite 3.20+ 上的每个 TestCase 测试结束时检查可延迟数据库约束,就像在支持可延迟约束的其他后端一样。这些检查不适用于旧版本的 SQLite,因为它们需要在那里进行昂贵的表内省。
解决方案
对我来说,这是Django 2.2 发行说明中的注释
如果没有迁移的应用程序与有迁移的应用程序有关系,则 SQLite 上的测试将失败。自从在 Django 1.7 中添加迁移以来,这一直是一个记录限制,但现在它更可靠地失败了。您会看到测试失败并出现类似 no such table: _. 在几个第三方应用程序中观察到了这种情况,这些应用程序在没有迁移的情况下测试了模型。您必须为此类模型添加迁移。
我不确定错误消息是否特别有用。但是一轮升级并检查我周围没有真正旧的 django 模块似乎可以解决它。
推荐阅读
- c# - 如何在 Asp.net MVC C# 中使用 Linq 从多个表中选择具有最大计数值的记录
- c++ - av_buffersink_get_frame() 返回错误 AVERROR(EAGAIN) -11
- excel - 如果它有 <30 行,则要删除整个列
- c# - 错误:NullReferenceException:对象引用未设置为对象的实例
- c# - 为什么删除命令没有从 C# 执行?
- cassandra - nodetool 命令在 cassandra 2.2.3 版中不起作用?
- javascript - 没有显示显示这个奇怪错误的字符串?function(){return Fn("DataSnapshot.val",0,0,arguments.length),this.node_.val()}
- r - 通过两个条件合并两个数据帧
- c - 套接字:recv() 上没有数据
- asp.net-mvc - 如何与 Json 一起访问 ViewBag