[英]Django: relation "django_site" does not exist
我在 aws 上運行一個測試 django 服務器,我剛剛安裝了 django-userena,當我嘗試在單擊提交時注冊用戶時,我收到以下消息:
關系“django_site”不存在第 1 行: ...“django_site”。“域”,“django_site”。“name” FROM “django_si ...
我不確定這里出了什么問題。 我做了一些研究並將" 'django.contrib.sites',"
添加到我安裝的應用程序中,但我仍然收到錯誤消息。 我會缺少一個額外的步驟。 有什么建議或建議嗎?
即使在我的設置中設置了SITE_ID = 1
,我最近也遇到了這個問題(Django 1.8.7)。 在進行任何其他遷移之前,我必須手動遷移sites
應用程序:
./manage.py migrate sites
./manage.py migrate
您可能會在創建站點模型之前調用站點對象(在 syncdb 或遷移之前)
例如:站點 = Site.objects.get(id=settings.SITE_ID)
我有同樣的問題並像這樣修復它:
SITE_ID=1
添加到settings.py
運行這個命令:
python manage.py migrate
我在使用django-cookiecutter
-cookiecutter 、 django-allauth
和django-rest-auth
時遇到了這個錯誤
我真的花了5個小時把頭發拉出來。 最終讓步,開始一點一點的注釋掉
對我有用的是注釋掉兩個預配置的 url 路徑(它們帶有 cookiecutter Django):
# User management
path("users/", include("yourapp.users.urls")),
path("accounts/", include("allauth.urls")),
之后遷移工作。
我取消了它的注釋,從那以后我的應用程序就一直在工作。 僅用於初始遷移
希望它可以幫助某人!
此問題可能是由您正在使用的應用程序之一引起的。 如果您仔細檢查回溯,您可能已經發現了拖欠。
我使用django-debug-toolbar
和zinnia
遇到了這些問題。
如果您使用的是django-debug-toolbar
這可能是一個解決方案:
嘗試按照顯式設置的步驟:http: //django-debug-toolbar.readthedocs.org/en/1.2.2/installation.html#explicit-setup
或者從您的INSTALLED APPS
中刪除debug_toolbar
。
如果這沒有幫助或者如果另一個應用程序導致了問題,請嘗試暫時刪除所有導入(例如已安裝的應用程序、url、自定義視圖、設置),它們會顯示在回溯中。
對我來說,一個可怕的代碼導致了這個錯誤。 我有一個全局變量來獲取當前站點
SITE = Site.objects.get(pk=1)
這在遷移期間進行了評估並導致錯誤。
將這里留給未來的我:
python manage.py makemigrations allauth
這對我有用,我忘了為什么,花了我太長時間才弄清楚我是如何第一次解決這個問題的
編輯:makemigrations 有時不會制作像我的一些項目使用的 allauth 之類的第 3 方的東西,所以我必須指定那些
我在為我的項目(使用百日草)創建一個新的空數據庫時遇到了同樣的問題
在“管理遷移”之前運行“管理遷移站點”並沒有解決任何問題。 似乎在完成任何表創建之前加載了完整的項目。
我決定捕捉導入百日草相關應用程序產生的錯誤。
例如:在應用程序的 urls.py 中
urlpatterns = None
app_name = 'something'
try:
from .views import MyEntryCreate
urlpatterns = [
url(r'^blogentry/create/$',
login_required(MyEntryCreate.as_view()),
name='zinnia_entry-add'),
]
except Exception as e:
logger.error(app_name+" Error urls: "+str(e))
urlpatterns = []
不得不在該應用程序的其他地方做類似的事情,並且“管理遷移”再次起作用。
如果在將 django 應用程序部署到 Heroku 時遇到此錯誤,請確保已運行:
heroku run python manage.py migrate
這對我有用
我遲到了,但我在 django v 1.11 上遇到了同樣的問題。
問題是我在正常 def() 和 form() 之外重建模型 [我使用模型進行選擇] 回溯應該列出 .py 文件
例如
File "filepath/views.py", line 67, in <module>
some_variable = some_model.objects.get(name ='name')
所以我不得不評論它來重建我的遷移
發布此內容以防有人遇到此問題並且上述答案均無效。
這是可能會或可能不會解決您的問題的解決方案之一的補充:
解決方案是:確保先執行遷移命令,然后再執行其他任何操作!
因此,在通常情況下,您將代碼上傳到雲,這可能是 AWS。 您正確地執行了通常的 docker-compose 命令,那么您應該首先執行以下操作:
執行以下步驟: docker-compose -f production.yml build
然后docker-compose -f production.yml run --rm django python manage.py migrate
然后之后,您現在可以通過docker-compose -f production.yml up
或docker-compose -f production.yml up -d
運行 docker 實例(在 google 上搜索這是什么意思)
--
如果您在遷移之前已經運行了該實例,那么只需停止您正在運行的 docker 實例並將其刪除。 我發現的一個方便的 docker 命令教程是: https ://www.thegeekdiary.com/how-to-list-start-stop-delete-docker-containers/
這基本上是數據庫錯誤我這次可以解決這個問題,數據庫是否存在? 為什么我不知道您是否知道,請查找並刪除它Site.objects.get_current()
如果您知道,請對其進行評論,並且在您運行./manage.py migrate
[step:2] 后我會說它已經存在。 所以我做了./manage.py migrate --fake
[step:3]
[步驟1]
su postgres
psql -U <username> -d <database>
SELECT * FROM django_site;
CREATE TABLE django_site(
id serial PRIMARY KEY,domain VARCHAR (50) NULL,
name VARCHAR (50) NULL);
INSERT INTO django_site VALUES('1','mysite.com', 'mysite');
\q
從 admin enterface 更改 mysite.com 值后。
我剛剛重新啟動計算機,問題就消失了:)(重新啟動 docker-compose 是不夠的)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.