Django迁移关系不存在

Mig*_*ado 7 python django postgresql

所以我试图在django应用程序上运行初始迁移,当我尝试运行migrate命令(python manage.py migrate或makemigrations)时,我收到以下错误:

psycopg2.ProgrammingError: relation "dotworks_server_internship" does not exist
LINE 1: ...s", "dotworks_server_internship"."questions" FROM "dotworks_...
                                                             ^
Run Code Online (Sandbox Code Playgroud)

我在使用Django 1.9.6的Windows环境中,我的数据库是postgres.另外,我正在使用PGAdmin来管理我的数据库.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'dotworks',
        'USER': 'postgres',
        'PASSWORD': 'mypasswordgoeshere',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 11

确保您的代码中没有任何调用 Django 管理器的类变量

例如:

class SomeViewSet(viewsets.ViewSet):
    se = SomeEntity.objects.first()  # fetching some entity on the class level

    def list(self, request):
    # the rest of the code
Run Code Online (Sandbox Code Playgroud)

因此,当您尝试创建/应用迁移时,此变量也将尝试初始化,并尝试访问SomeEntity,但此时该实体甚至不存在,并且会发生错误。


Mat*_*hoo 6

我遇到了这个问题,我不得不注释掉引用了views.py的urls.py中的所有内容,然后运行makemigrations。希望这可以帮助。

  • 当您运行python manage.py makemigrations时,似乎要检查urls.py(在我的情况下为urls_tenanats.py),并将尝试执行sql以在数据存在之前读取模型数据。当我运行makemigrations时,它在关系XXX不存在的第一个模型上失败。我注释了urls.py中引用views.py的代码,使makemigrations工作。 (3认同)

Dav*_* D. 0

如果您在本地运行,对于每个 Django 应用程序(也许您只有一个),请删除该migrations文件夹的内容。然后,运行python manage.py makemigrations app1 app2 app3(如果您有 3 个名为 app1、app2、app3 的 Django 应用程序)。这将(重新)创建迁移数据库所需的迁移文件

然后,运行python manage.py migrate。它将应用您刚刚创建的迁移文件。

  • 不起作用,问题似乎是第一次迁移尝试甚至没有创建表 (2认同)