2013-07-26 45 views
10

我現在有一個Django應用程序是我的電腦上發展同我的數據庫的數據,但是當我試圖在測試服務器上運行這個程序,我得到以下Django的DatabaseError:關係「django_site」

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

錯誤則任何人告訴我爲什麼會出現此錯誤please.thanks

+2

你同步的測試服務器上的數據庫? – Brandon

+0

是的,我做了syncd的是和那是當我得到的錯誤,我也試過運行manage.py runserver,仍然錯誤仍然是相同的 – user1940979

+0

你是否改變或不包括在settings.py SITE_ID設置,使SITE_ID不關聯到django_site表中的記錄? – Brandon

回答

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 

和所有的好時候。

4

我看不到您的模型或您使用的是什麼應用程序,但我的猜測是,您正在使用django_site(網站模型),您沒有' django.contrib.sites'INSTALLED_APPS。

如果我是正確的,那麼只需將'django.contrib.sites',加到您的INSTALLED_APPS

+1

我已經安裝了django.contrib.sites – user1940979

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

+1

試過這個,沒有工作。我在Django 1.8和使用postgresql – Rexford

+0

這對我有效。 'django == 1.8.1'和postgres – connorbode

7

您可以創建網站的模式(執行syncdb之前)

EX之前調用站點對象。 objects.get(ID = settings.SITE_ID)

3

我有同樣的問題,固定它是這樣的:

  1. 添加SITE_ID=1settings.py
  2. 運行以下命令:

    蟒蛇manage.py遷移

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並遷移到上面。

這一工程所有的時間對我來說

+1

感謝上帝,不僅有我這個問題。 –

-2

還要確保SITE_ID = 1來settings.py中的數據庫定義之前

+1

我不明白這會如何影響任何東西。 DATABASES和SITE_ID都是變量,分配給字符串,而這些設置由Django加載,無論它的順序如何(完全不同於列表中的應用程序的順序)。 – Wernight

1

的東西夫婦,你可以嘗試和檢查:

  • 您的settings.py應該有SITE_ID通常= 1
  • 更改您的INSTALLED_APPS的訂單您的settings.py並嘗試暫時評論項目。
  • 正如Geo所說,在創建站點模型之前請檢查您是否未調用站點對象(例如:site = Site.objects.get(id=settings.SITE_ID))。

一旦你得到它的工作,請記住manage.py makemigrations APP_NAME,因爲我發現它似乎已經避免了註釋步驟。

0

我克服下列順序這一問題INSTALLED_APPS

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