11

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

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

谁能告诉我为什么会出现这个错误。谢谢

4

10 回答 10

8

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

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

于 2014-08-11T07:10:23.250 回答
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',
)

python manage.py makemigrations
python manage.py migrate

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

对我来说一直有效

于 2015-06-16T23:57:43.420 回答
4

在启动新数据库和使用 django-debug-toolbar 时遇到了这个奇怪的问题。将其从 中删除INSTALLED_APPS并能够运行syncdb。然后重新添加了 debug_toolbar ,它仍然可以正常工作。

debug_toolbar如果您使用的是 django-debug-toolbar,请尝试在已安装的应用程序中注释掉并重试。


更新:请按照显式设置的步骤:http: //django-debug-toolbar.readthedocs.org/en/1.2.2/installation.html#explicit-setup

于 2014-03-14T10:48:29.403 回答
4

我看不到您的模型或您正在使用什么应用程序,但我猜您正在使用 django_site(站点模型)并且在 INSTALLED_APPS 中没有“django.contrib.sites”。

如果我是正确的,那么只需添加'django.contrib.sites',到您的INSTALLED_APPS.

于 2013-07-27T00:33:00.053 回答
3

我有同样的问题并像这样修复它:

  1. 添加SITE_ID=1settings.py
  2. 运行这个命令:

    python manage.py 迁移

于 2015-04-23T15:55:48.093 回答
2

无法用 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

一切顺利。

于 2013-07-27T13:00:27.837 回答
1

您可以尝试检查几件事:

  • settings.py应该有一个SITE_ID通常= 1
  • 更改您INSTALLED_APPS的顺序settings.py并尝试暂时将项目注释掉。
  • 正如 Geo 所说,在创建站点模型之前检查您是否没有调用站点对象(例如:)site = Site.objects.get(id=settings.SITE_ID)

一旦你让它工作,记住manage.py makemigrations APP_NAME我发现它似乎已经避免了注释掉步骤的情况。

于 2016-03-02T22:35:50.030 回答
0

我的“注释掉”模式与接受的答案略有不同(如下所示)。也就是说,它可能是唯一的,具体取决于分散在您的应用程序中的各种依赖项的值。如果注释掉上面的值会引发错误消息,我建议注释掉引发错误消息的应用程序并相应地取消注释,直到它适合您。这可能有点“蛮力”,但它应该可以完成工作。

INSTALLED_APPS = [
    # django native apps
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.admin',
    "django.forms",
    'django.contrib.gis',
    # 'django.contrib.flatpages',
    #third party apps
    #django-allauth apps
    'allauth',
    # 'allauth.account',
    # 'allauth.socialaccount',
    # 'allauth.socialaccount.providers.facebook',
    # 'allauth.socialaccount.providers.google',
    # 'allauth.socialaccount.providers.twitter',
    # 'allauth.socialaccount.providers.github',
    # my apps
    'app0',
    'app1',]

#MIGRATION_MODULES = {"sites": "mysite.contrib.sites.migrations"}
于 2020-10-09T17:25:19.880 回答
0

我用以下顺序克服了这个问题INSTALLED_APPS

INSTALLED_APPS = (
    'django.contrib.sites',
    'allauth',                                                                 
    'allauth.account',                                                         
    # my other apps,
)
于 2016-04-18T19:23:11.993 回答
-2

还要确保 SITE_ID = 1 在 settings.py 中的 DATABASE 定义之前

于 2015-07-27T19:35:48.953 回答