我目前有一个django应用程序正在我的电脑上开发我的数据库中的数据,但当我尝试在测试服务器上运行此应用程序时,我得到以下错误
DatabaseError: relation "django_site" does not exist
LINE 1: ..."django_site"."domain", "django_site"."name" FROM "django_si...
任何人都可以告诉我为什么会收到这个错误。谢谢
答案 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)
我有同样的问题,并修复如下:
[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
运行此命令:
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
= 1
中INSTALLED_APPS
的订单,并尝试暂时将项目评论出来。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