[英]Cannot syncdb “DatabaseError: no such table: django_site”
我已經問了一次這個問題,但沒有得到答案,我已經閱讀了我可以在互聯網上找到的每個錯誤發生的例子,所以我將再次嘗試更多信息。
我正在嘗試的東西:克隆遠程倉庫,然后我將在我的開發機器上運行以進行開發。
我遇到的問題:將我的repo克隆到web服務器后,使用pip requirements.txt將依賴項安裝到我的virtualenv中我嘗試使用syncdb構建db並允許我使用runserver運行服務器但是當我嘗試這樣做時得到錯誤“DatabaseError:no such table:django_site”輸出。
我嘗試了什么:從我的installed_apps中評論django-contrib-sites。 使用pip手動安裝django_sites有和沒有--ignore-installed,pip說“成功安裝django-sites django”但仍然得到錯誤。 我試圖“遷移”和“遷移--all”但我得到了同樣的錯誤。 我還驗證了db db.sqlite3是settings.py中指定的db,並且位於正確的位置。
installed_apps -
INSTALLED_APPS = (
'south',
'django.contrib.flatpages',
'django.contrib.comments',
'django.contrib.markup',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'django.contrib.sitemaps',
)
其中一些是來自前一個開發者的自制應用程序。
.bashrc中的行
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/projects
source /etc/bash_completion.d/virtualenvwrapper
最后一行是因為我在這台開發機器上使用Ubuntu,並非100%確定,但在啟動bash時我沒有遇到任何錯誤。
部署文件夾不確定這是什么,它有我的requirements.txt和其他一些文件: - httpd.conf - nowww.htaccess - plural.htaccess - requirements.txt - ssl.htaccess - wsgi.py
我正在使用的流程
create virtualenv with mkvirtualenv envname
pip install django
git ssh clone from remote to local folder
pip install -r requirements.txt from repo
./manage.py syncdb
DatabaseError:沒有這樣的表:django_site
我真的需要弄清楚這一點,因為它阻止我在我的開發服務器上部署並進行遠程工作。 如果有人可以提供幫助,我保證會詳細解答,甚至可以在某個地方構建一個教程頁面,如果它是一個復雜的解決方案。
嘗試從已安裝的應用中刪除南方。 然后syncdb,向后添加並遷移--all
在解決這個問題之前,我對這個問題進行了多年的研究
在檢查回溯http://pastebin.com/6Ehxt55h時 ,您會注意到:
File "/home/username/.virtualenvs/odd/local/lib/python2.7/site-packages/vellum/models.py", line 15, in <module>
from vellum import settings
File "/home/username/.virtualenvs/odd/local/lib/python2.7/site-packages/vellum/settings.py", line 10, in <module>
BLOG_NAME = getattr(settings, 'BLOG_NAME', Site.objects.get_current().name)
File "/home/username/.virtualenvs/odd/local/lib/python2.7/site-packages/django/contrib/sites/models.py", line 26, in get_current
current_site = self.get(pk=sid)
File "/home/username/.virtualenvs/odd/local/lib/python2.7/site-packages/django/db/models/manager.py", line 143, in get
return self.get_query_set().get(*args, **kwargs)
正如你所看到的,你打電話Site.objects.get_current().name
中vellum.models
模塊,它的表可能還沒有成為在准備syncdb
。 所以:
BLOG_NAME
設置添加到您的設置 - 這將阻止調用django_site
表,因為getattr
將成功 要么
from vellum import settings
延遲到你真正需要它的地方 - 在類或方法中 希望有所幫助。
我也受到這個問題的影響。
@tuxcanfly你說的是真的,但由於某種原因,即使在settings.py
了BLOG_NAME
也會評估Site.objects.get_current().name
表達式。
我已經向GitHub發了一張票(和補丁)來解決這個問題: https : //github.com/pigmonkey/django-vellum/issues/3
使用try/catch
而不是gettattr
修復它: https : //github.com/AndreMiras/django-vellum/commit/9c242e16dc62c218e075554c5f5c5bc590df8265
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.