簡體   English   中英

無法syncdb“DatabaseError:沒有這樣的表:django_site”

[英]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().namevellum.models模塊,它的表可能還沒有成為在准備syncdb 所以:

  • BLOG_NAME設置添加到您的設置 - 這將阻止調用django_site表,因為getattr將成功

要么

  • 將調用from vellum import settings延遲到你真正需要它的地方 - 在類或方法中

希望有所幫助。

我也受到這個問題的影響。

@tuxcanfly你說的是真的,但由於某種原因,即使在settings.pyBLOG_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM