Django DatabaseError:关系"django_site"

use*_*979 10 django postgresql-9.2

我目前有一个django应用程序正在我的电脑上开发我的数据库中的数据,但当我尝试在测试服务器上运行此应用程序时,我收到以下错误

DatabaseError: relation "django_site" does not exist
LINE 1: ..."django_site"."domain", "django_site"."name" FROM "django_si...
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我为什么会得到这个错误.谢谢

Geo*_*cob 7

您可能在创建站点模型之前调用站点对象(在syncdb之前)

例如:site = Site.objects.get(id = settings.SITE_ID)


Kho*_*Phi 5

这个问题继续困扰着许多人,包括我自己.虽然这是一个繁琐的过程,但这种方法可以节省我的脑力:

禁用INSTALLED_APPS中的所有外部应用程序,但您自己的应用程序除外,如下所示:

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.sites',
    'django.contrib.flatpages',
    'main', # This is my own app.

    # 'compressor',
    # 'ckeditor',
    # 'imagekit',
    # 'debug_toolbar',
    # 'rest_framework',
    # 'allauth',
    # 'allauth.account',
    # 'allauth.socialaccount',

    # 'allauth.socialaccount.providers.google',
    # 'allauth.socialaccount.providers.facebook',
)
Run Code Online (Sandbox Code Playgroud)

python manage.py makemigrations
python manage.py migrate
Run Code Online (Sandbox Code Playgroud)

然后,取消注释所有其他应用程序,然后重复makemigrations并在上面进行迁移.

对我来说一直都有效


use*_*979 2

无法用 django 方式解决这个问题,所以我尝试使用 sql,我创建了一个这样的数据库转储。

pg_dump mypgdatabase | gzip -c > mypgdatabase.dump.out.gz
Run Code Online (Sandbox Code Playgroud)

然后将其移至服务器

scp /path/to/mypgdatabase.dump.out.gz  my_remote_server
Run Code Online (Sandbox Code Playgroud)

然后像这样在服务器上重新创建它

psql -d mypgdatabase -f mypgdatabase.dump.out
Run Code Online (Sandbox Code Playgroud)

然后运行

./manange.py migrate --all
Run Code Online (Sandbox Code Playgroud)

一切顺利的话。