Django DatabaseError: отношение "django_site"

В настоящее время у меня есть приложение django, которое я разрабатываю на своем ПК с данными в моем db, но когда я пытаюсь запустить это приложение на тестовом сервере, я получаю ошибку ниже

DatabaseError: relation "django_site" does not exist
LINE 1: ..."django_site"."domain", "django_site"."name" FROM "django_si...

может кто-нибудь сказать мне, почему я получаю эту ошибку, пожалуйста .thanks

Ответ 1

не удалось решить этот путь django, поэтому я попытался использовать sql, я создал дамп только такой базы данных.

pg_dump mypgdatabase | gzip -c > mypgdatabase.dump.out.gz

затем переместил его на сервер

scp /path/to/mypgdatabase.dump.out.gz  my_remote_server

а затем воссоздал его на сервере следующим образом

psql -d mypgdatabase -f mypgdatabase.dump.out

затем запустите

./manange.py migrate --all

и все, когда хорошо.

Ответ 2

Вы можете вызвать объект сайта перед созданием модели сайта (до syncdb)

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

Ответ 3

Этот вопрос продолжает поражать многих, включая меня. Несмотря на утомительный процесс, этот подход позволяет мне сохранить мозг:

Отключите все внешние приложения в вашем 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',
)

Запустить

python manage.py makemigrations
python manage.py migrate

Затем раскомментируйте все остальные приложения, затем повторите makemigrations и выполните миграцию выше.

Это работает все время для меня

Ответ 4

Я не могу видеть ваши модели или приложения, которые вы используете, но я предполагаю, что вы используете django_site (модель сайта), и у вас нет "django.contrib.sites" в INSTALLED_APPS.

Если я прав, просто добавьте 'django.contrib.sites', к вашему INSTALLED_APPS.

Ответ 5

Если эта новая проблема возникла при запуске новой базы данных и использовании панели инструментов django-debug. Удалил его из INSTALLED_APPS и смог запустить syncdb. Затем повторно добавлен debug_toolbar, и он все еще работает нормально.

Если вы используете панель инструментов django-debug, попробуйте прокомментировать debug_toolbar в установленных приложениях и повторите попытку.


Обновление: выполните следующие действия для явной настройки: http://django-debug-toolbar.readthedocs.org/en/1.2.2/installation.html#explicit-setup

Ответ 6

У меня такая же проблема и исправлена ​​она вот так:

  • добавить SITE_ID=1 в settings.py
  • выполните следующую команду:

    python manage.py migrate

Ответ 7

Несколько вещей, которые вы можете попробовать и проверить:

  • Ваш settings.py должен иметь SITE_ID обычно = 1
  • Измените порядок вашего INSTALLED_APPS в settings.py и попробуйте временно комментировать элементы.
  • Как сказал Geo, убедитесь, что вы не вызываете объект сайта перед созданием модели сайта (например: site = Site.objects.get(id=settings.SITE_ID)).

Как только вы его заработаете, запомните manage.py makemigrations APP_NAME, поскольку я обнаружил случаи, когда он, похоже, избегал этапа комментирования.

Ответ 8

Я преодолел эту проблему со следующим порядком в INSTALLED_APPS:

INSTALLED_APPS = (
    'django.contrib.sites',
    'allauth',                                                                 
    'allauth.account',                                                         
    # my other apps,
)

Ответ 9

Также убедитесь, что параметр SITE_ID = 1 находится перед определением DATABASE в settings.py