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
У меня такая же проблема и исправлена она вот так:
Ответ 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