当 Django 中出现异常时要检查'no such table'事项



我在django中定义了一个新模型。它看起来像这样:

class User(models.Model):
email = models.EmailField(primary_key=True)
REQUIRED_FIELDS = []
USERNAME_FIELD = 'email'
is_anonymous = False
is_authenticated = True

我已经将它包含的应用程序注册到设置中.py

INSTALLED_APPS = [
# 'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'lists',
'accounts',  # <-- this
]

我已经刷新了数据库,运行了migrate --run-syncdb,重新进行了迁移和迁移。这样我在运行服务器时就不会有任何you have un-applied migrations消息。

然而,django.db.utils.OperationalError: no such table : accounts_user仍然存在。

我用过shell,它也会抛出错误:

>>> from accounts.models import *
>>> User
<class 'accounts.models.User'>
>>> User.objects
<django.db.models.manager.Manager object at 0x7fbcbea35ef0>
>>> User.objects
<django.db.models.manager.Manager object at 0x7fbcbea35ef0>
>>> User.objects.all()
Traceback (most recent call last):
django.db.utils.OperationalError: no such table: accounts_user

我已经用尽了我所知道的所有其他选择。

当遇到这样的错误时,有人能为要检查的事情提供一个通用的检查列表吗(无论多么愚蠢(?

这是我的常规检查列表

  1. 检查迁移文件是否正确生成。在您的情况下,请确认迁移是在帐户/迁移和版本下生成的

  2. 如果生成不正确,则使用python manage.py makemigrations再次生成并再次迁移python manage.py migrate

  3. 如果正确,请查看django_migrations表。

    SELECT "_rowid_",* FROM "main"."django_migrations" ORDER BY "_rowid_" ASC

    并确认相应的accounts_user迁移文件已执行。

在我的情况下,我不得不重新创建整个数据集。

我不得不手动删除sqlite文件并重新创建它。在那之后,错误就消失了。

也可以从manage.py中完成。

相关内容

最新更新