服从测试山羊 - 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.py
或views.py
)吗?以上是关于服从测试山羊 - OperationalError的主要内容,如果未能解决你的问题,请参考以下文章
Django 在单独的数据库上进行测试,给出“OperationalError:没有这样的表:auth_user”
django:sqlite3.OperationalError:没有这样的表
当我运行测试用例时,出现此错误: psycopg2.OperationalError: cursor "_django_curs_140351416325888_23" does