Django错误:关系“users_user”不存在。

31

在迁移过程中,我遇到了以下错误:

django.db.utils.ProgrammingError: relation "users_user" does not exist

  File "/Users/user/Documents/workspace/api/env/lib/python2.7/site-packages/django/db/backends/utils.py", line 79, in execute
    return super(CursorDebugWrapper, self).execute(sql, params)
  File "/Users/user/Documents/workspace/api/env/lib/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
  File "/Users/user/Documents/workspace/api/env/lib/python2.7/site-packages/django/db/utils.py", line 97, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/Users/user/Documents/workspace/api/env/lib/python2.7/site-packages/django/db/backends/utils.py", line 62, in execute
    return self.cursor.execute(sql)
这是我的模型:
from django.db import models
from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin
from ..managers.user import UserManager


class User(AbstractBaseUser, PermissionsMixin):
    # Email identifier, primary key, unique identifier for the user.
    email = models.EmailField(verbose_name='email address', max_length=254, unique=True, db_index=True)
    is_admin = models.BooleanField(default=False)
    is_active = models.BooleanField(default=False)
    objects = UserManager()

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = []

    class Meta:
        verbose_name = 'User'
        app_label = "users"

    def __unicode__(self):
        return self.email

    @property
    def get_full_name(self):
        return self.email

    @property
    def get_short_name(self):
        return self.email

    def has_module_perms(self, app_label):
        """
        Does the user have permissions to view the app `app_label`
        """
        # Simplest possible answer: Yes, always
        return True

    @property
    def is_staff(self):
        # Simplest possible answer: All admins are staff
        return self.is_admin

设置:

AUTH_USER_MODEL = 'users.User'

有我遗漏的吗?


3
你执行了 ./manage.py makemigrations./manage.py migrate 吗? - Thomas Gak-Deluen
1
@tgdn 是的,我使用了“makemigrations”,没有错误,然后执行“migrate”时出现了上述错误。 - Prometheus
尝试重命名您的模型。 - DAKZH
在你的用户应用程序中,你应该有一个名为migrations的文件夹。 它应该只包含0001_initial.py__init__.py两个文件。是这样吗?尝试运行./manage.py sqlmigrate user 0001_initial命令并查看它的作用,因为错误就产生在这里。 - Thomas Gak-Deluen
1
@tgdn 好的,我解决了这个问题,首先删除其他应用程序并在主用户模型上先运行迁移。感谢您的帮助。如果您发布答案,我很乐意接受它。 - Prometheus
显示剩余5条评论
4个回答

49
在您的用户应用程序中,您应该有一个名为migrations的文件夹。 它只应包含0001_initial.py__init__.py。这正确吗?尝试运行./manage.py sqlmigrate user 0001_initial并查看它的作用,因为错误就是来自那里。

18
这是我的问题 - 我从未运行过实际的最初用户迁移。你可能尚未运行过 python manage.py makemigrations appname- 一旦你这样做并在之后进行 migrate,一切都应该没问题了。 - sofly
首先执行命令 ./manage.py migrate user 0001_initial 成功了。 - André Duarte

2

另一个问题可能是您正在为另一个应用程序使用数据库。因此,如果是这种情况,请在再次进行迁移之前删除数据库。

原始答案: "最初的回答"


我刚刚清空了我的数据库,然后删除了它,并重新创建了一个具有相同属性的新数据库,然后运行 ./manage.py migrate 命令就成功了。以上所有答案都没有帮助到我。 - BGOPC

1

我在Postgres DB中也遇到了同样的问题。

按照以下步骤操作:

  • 删除先前的数据库并创建新的数据库
  • 添加migration文件夹,并在每个具有模型的应用程序的迁移文件夹中添加init.py空文件
  • 现在使用命令python manage.py makemigrations
  • 使用命令python manage.py migrate

0
我曾经遇到过同样的问题,我的解决方法是运行 python manage.py makemigrations <app_name>,并且不要忘记在你的 settings.py 文件中添加 <app_name>INSTALLED_APPS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接