服从测试山羊 - OperationalError

Posted

技术标签:

【中文标题】服从测试山羊 - OperationalError【英文标题】:Obey the testing goat - OperationalError 【发布时间】:2019-07-27 01:38:14 【问题描述】:

我正在阅读 Obey the testing goat book 并偶然发现了这个错误:

django.db.utils.OperationalError: table lists_item has no column named list_id

它只在我在开发服务器上时出现(当我运行测试时它就像一个魅力)。

这本书解释说它可能会发生here:

如果您使用 manage.py runserver 启动您的开发服务器,您可能会遇到数据库错误“表 lists_item 没有名为 list_id 的列”。您需要更新本地数据库以反映我们在 models.py 中所做的更改。使用 manage.py 迁移。如果它让您对 IntegrityErrors 感到不满,只需删除 [1] 数据库文件并重试。

我正在做它所说的,但错误并没有消失。也许有人可以帮我解决这个问题?

【问题讨论】:

确保在 manage.py migrate 之前运行 manage.py makemigrations。如果这不起作用,请显示lists 应用程序的迁移文件。 manage.py showmigrations lists 的输出也可能有助于调试。 【参考方案1】:

Django的makemigrations负责创建new migrations based on the changes detected to your models(https://docs.djangoproject.com/en/2.1/ref/django-admin/#django-admin-makemigrations)。

您应该在运行migrate 之前运行makemigrations,因为后者会将前者检测到的新迁移应用到数据库。

【讨论】:

我已经删除了数据库并再次运行迁移(makemigrations 然后迁移)。当我运行服务器并尝试将新项目添加到列表中时,它是这样的:imgur.com/mea7Tco 你是否也删除了__pycache__?你能发布相关的models.py(或forms.pyviews.py)吗?

以上是关于服从测试山羊 - OperationalError的主要内容,如果未能解决你的问题,请参考以下文章

Django 在单独的数据库上进行测试,给出“OperationalError:没有这样的表:auth_user”

django:sqlite3.OperationalError:没有这样的表

当我运行测试用例时,出现此错误: psycopg2.OperationalError: cursor "_django_curs_140351416325888_23" does

peewee.OperationalError: no such table

JAVA:编写一个动物的继承关系代码.

软件测试周刊(第35期):绝对服从就是最大的消极怠工