Django DatabaseError:关系“django_site”

时间:2013-07-26 21:40:45

标签: django postgresql-9.2

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

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

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

10 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分: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并迁移到上面。

对我来说一直很有效

答案 2 :(得分:4)

我看不到您的模型或您使用的是哪些应用,但我猜您使用的是django_site(网站模型),并且您在INSTALLED_APPS中没有'django.contrib.sites'。

如果我没错,请将'django.contrib.sites',添加到INSTALLED_APPS

答案 3 :(得分:4)

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

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


更新:请按照明确设置的步骤进行操作:http://django-debug-toolbar.readthedocs.org/en/1.2.2/installation.html#explicit-setup

答案 4 :(得分:3)

我有同样的问题,并修复如下:

  1. [SocketException: An attempt was made to access a socket in a way forbidden by its access permissions 127.0.0.1:10000] 添加到SITE_ID=1
  2. 运行此命令:

    python manage.py migrate

答案 5 :(得分: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

一切顺利。

答案 6 :(得分:1)

您可以尝试检查几件事情:

  • 您的$watch通常应settings.py SITE_ID
  • 更改= 1INSTALLED_APPS的订单,并尝试暂时将项目评论出来。
  • 正如Geo所说,在创建网站模型之前,请检查您是否在调用网站对象(例如:settings.py)。

一旦你开始工作,记得site = Site.objects.get(id=settings.SITE_ID),因为我发现它似乎已经避免了评论的情况。

答案 7 :(得分:0)

我使用INSTALLED_APPS中的以下顺序克服了这个问题:

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

答案 8 :(得分: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"}

答案 9 :(得分:-2)

还要确保在settings.py

中的DATABASE定义之前有SITE_ID = 1