首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能同步“DatabaseError:没有这样的表:django_site”

不能同步“DatabaseError:没有这样的表:django_site”
EN

Stack Overflow用户
提问于 2013-09-16 21:40:44
回答 3查看 5K关注 0票数 5

我已经问过这个问题一次了,但没有得到答案,我已经阅读了每一个我可以在互联网上找到的错误的例子,所以我将在这里再试一次,提供更多的信息。

我正在尝试的内容:,一个远程回购的克隆,然后我将在我的开发机器上为开发目的实时运行它。

我遇到的问题:在从webserver上克隆我的repo之后,使用pip requirements.txt将依赖项安装到我的虚拟服务器中,我尝试同步数据库来构建db,并允许我使用runserver运行服务器,但是当我尝试这样做时,我得到了错误"DatabaseError: no这样的表: django_site“输出。

我尝试过的内容:注释掉django--来自我的installed_apps的站点。使用带和不带--忽略安装的pip手动安装django_sites,pip说“成功安装了django-sites”,但是仍然会出现错误。我试过“迁移”和“迁移--所有的”,但是我得到了同样的错误。我还验证了db db.sqlite3是settings.py中指定的db,并且位于正确的位置。

installed_apps -

代码语言:javascript
复制
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中的应用

代码语言:javascript
复制
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/projects
source /etc/bash_completion.d/virtualenvwrapper

最后一行是因为我在这台开发机器上使用了Ubuntu,不能百分之百地肯定这一点,但是在启动bash时没有任何错误。

部署文件夹不确定这是什么,它有我的requirements.txt和其他一些文件:- httpd.conf - nowww.htaccess - plural.htaccess - requirements.txt - ssl.htaccess - wsgi.py

进程我正在使用

代码语言:javascript
复制
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

我真的需要弄清楚这一点,因为它阻止了我在家里部署到我的dev服务器上并进行远程工作。如果有人能帮忙

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-09-21 17:48:02

我也受到这个问题的影响。

@tuxcanfly您所说的是正确的,但是由于某种原因,即使在Site.objects.get_current().name中设置了BLOG_NAME,也会对BLOG_NAME表达式进行计算。

我为这个问题张贴了一张到GitHub的票证(和一个补丁):https://github.com/pigmonkey/django-vellum/issues/3

使用try/catch而不是gettattr修复它:https://github.com/AndreMiras/django-vellum/commit/9c242e16dc62c218e075554c5f5c5bc590df8265

票数 1
EN

Stack Overflow用户

发布于 2013-09-16 21:54:48

尝试从安装的应用程序中移除南方。然后syncdb,向南返回并迁移--全部

我花了很长时间才弄明白这个问题。

票数 1
EN

Stack Overflow用户

发布于 2013-09-19 06:04:12

在检查跟踪http://pastebin.com/6Ehxt55h时,您会注意到:

代码语言:javascript
复制
  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)

如您所见,您正在vellum.models模块中调用vellum.models,其表在syncdb期间可能还没有准备好。所以:

  • BLOG_NAME设置添加到您的设置--这将阻止对django_site表的调用,因为getattr将成功。

  • 将对from vellum import settings的调用延迟到真正需要它的地方-在类或方法中

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18837777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档