[英]django.db.utils.OperationalError: no such table: django_site
I am getting error when I am running python manage.py syncdb
in django 1.7 在Django 1.7中运行python manage.py syncdb
时出现错误
I am using Python2.7 but I get the exact same error in Python 3.4.3 我正在使用Python2.7,但在Python 3.4.3中得到了完全相同的错误
$ python manage.py syncdb
Traceback (most recent call last):
File "manage.py", line 13, in <module>
execute_from_command_line(sys.argv)
File "/Users/HK/anaconda/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
utility.execute()
File "/Users/HK/anaconda/lib/python2.7/site-packages/django/core/management/__init__.py", line 354, in execute
django.setup()
File "/Users/HK/anaconda/lib/python2.7/site-packages/django/__init__.py", line 21, in setup
apps.populate(settings.INSTALLED_APPS)
File "/Users/HK/anaconda/lib/python2.7/site-packages/django/apps/registry.py", line 115, in populate
app_config.ready()
File "/Users/HK/anaconda/lib/python2.7/site-packages/debug_toolbar/apps.py", line 15, in ready
dt_settings.patch_all()
File "/Users/HK/anaconda/lib/python2.7/site-packages/debug_toolbar/settings.py", line 232, in patch_all
patch_root_urlconf()
File "/Users/HK/anaconda/lib/python2.7/site-packages/debug_toolbar/settings.py", line 220, in patch_root_urlconf
reverse('djdt:render_panel')
File "/Users/HK/anaconda/lib/python2.7/site-packages/django/core/urlresolvers.py", line 522, in reverse
app_list = resolver.app_dict[ns]
File "/Users/HK/anaconda/lib/python2.7/site-packages/django/core/urlresolvers.py", line 329, in app_dict
self._populate()
File "/Users/HK/anaconda/lib/python2.7/site-packages/django/core/urlresolvers.py", line 269, in _populate
for pattern in reversed(self.url_patterns):
File "/Users/HK/anaconda/lib/python2.7/site-packages/django/core/urlresolvers.py", line 372, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "/Users/HK/anaconda/lib/python2.7/site-packages/django/core/urlresolvers.py", line 366, in urlconf_module
self._urlconf_module = import_module(self.urlconf_name)
File "/Users/HK/anaconda/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/Users/HK/website/mor36/src/mor36/urls.py", line 13, in <module>
url(r'^admin/', include(admin.site.urls)),
File "/Users/HK/anaconda/lib/python2.7/site-packages/django/contrib/admin/sites.py", line 262, in urls
return self.get_urls(), self.app_name, self.name
File "/Users/HK/anaconda/lib/python2.7/site-packages/django/contrib/admin/sites.py", line 246, in get_urls
url(r'^%s/%s/' % (model._meta.app_label, model._meta.model_name), include(model_admin.urls))
File "/Users/HK/anaconda/lib/python2.7/site-packages/django/contrib/admin/options.py", line 598, in urls
return self.get_urls()
File "/Users/HK/anaconda/lib/python2.7/site-packages/cms/admin/pageadmin.py", line 139, in get_urls
url_patterns += super(PageAdmin, self).get_urls()
File "/Users/HK/anaconda/lib/python2.7/site-packages/cms/admin/placeholderadmin.py", line 121, in get_urls
from cms.urls import SLUG_REGEXP
File "/Users/HK/anaconda/lib/python2.7/site-packages/cms/urls.py", line 20, in <module>
urlpatterns = get_app_patterns()
File "/Users/HK/anaconda/lib/python2.7/site-packages/cms/appresolver.py", line 196, in get_app_patterns
current_site = Site.objects.get_current()
File "/Users/HK/anaconda/lib/python2.7/site-packages/django/contrib/sites/models.py", line 54, in get_current
current_site = self.get(pk=sid)
File "/Users/HK/anaconda/lib/python2.7/site-packages/django/db/models/manager.py", line 92, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/Users/HK/anaconda/lib/python2.7/site-packages/django/db/models/query.py", line 351, in get
num = len(clone)
File "/Users/HK/anaconda/lib/python2.7/site-packages/django/db/models/query.py", line 122, in __len__
self._fetch_all()
File "/Users/HK/anaconda/lib/python2.7/site-packages/django/db/models/query.py", line 966, in _fetch_all
self._result_cache = list(self.iterator())
File "/Users/HK/anaconda/lib/python2.7/site-packages/django/db/models/query.py", line 265, in iterator
for row in compiler.results_iter():
File "/Users/HK/anaconda/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 701, in results_iter
for rows in self.execute_sql(MULTI):
File "/Users/HK/anaconda/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 787, in execute_sql
cursor.execute(sql, params)
File "/Users/HK/anaconda/lib/python2.7/site-packages/django/db/backends/utils.py", line 81, in execute
return super(CursorDebugWrapper, self).execute(sql, params)
File "/Users/HK/anaconda/lib/python2.7/site-packages/django/db/backends/utils.py", line 65, in execute
return self.cursor.execute(sql, params)
File "/Users/HK/anaconda/lib/python2.7/site-packages/django/db/utils.py", line 94, in __exit__
six.reraise(dj_exc_type, dj_exc_value, traceback)
File "/Users/HK/anaconda/lib/python2.7/site-packages/django/db/backends/utils.py", line 65, in execute
return self.cursor.execute(sql, params)
File "/Users/HK/anaconda/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py", line 485, in execute
return Database.Cursor.execute(self, query, params)
**django.db.utils.OperationalError: no such table: django_site**
I can see you are using django-CMS, I've encountered the same issue. 我可以看到您正在使用django-CMS,遇到了同样的问题。 I can assume that there might be an issue with newer versions of Django. 我可以假设较新版本的Django可能存在问题。
The root cause is that Django tables are not created yet, but cms tries to refer to them (in particular to get the current site from Sites framework) 根本原因是尚未创建Django表,但cms尝试引用它们(特别是从Sites框架获取当前站点)
That wasn't the issue in previous versions of Django because you would usually do python manage.py sycndb
(which is removed at least in Django 1.9) and that command created all the django tables. 那不是以前版本的Django中的问题,因为您通常会执行python manage.py sycndb
(至少在Django 1.9中已删除),并且该命令创建了所有django表。
So to solve this - you need to comment out everything related to django CMS in your settings.py
, run python manage.py migrate
to migrate Django tables, and then uncomment cms stuff and migrate once again, then it shouldn't be an issue anymore. 因此,要解决此问题-您需要在settings.py
注释掉与django CMS相关的所有内容,运行python manage.py migrate
来迁移Django表,然后取消注释cms的内容并再次迁移,那么这应该不是问题不再。 (sometimes it helps to also comment current project from installed apps as well as cms stuff so that Django 1.9 checks wont check your urls.py which has entries related to cms). (有时,它还有助于注释已安装的应用程序中的当前项目以及cms内容,以便Django 1.9进行检查不会检查您的urls.py,其中包含与cms相关的条目)。
If you encounter the same issue on Django <1.9 but > 1.7 try to do syncdb first. 如果您在Django <1.9但> 1.7上遇到相同的问题,请尝试首先执行syncdb。
Hope that helps to anyone who encounters similar issue. 希望对遇到类似问题的任何人有所帮助。
If it doesn't already exist, add the following to the INSTALLED_APPS property in settings.py: 如果尚不存在,请将以下内容添加到settings.py中的INSTALLED_APPS属性:
'django.contrib.sites'
and also add SITE_ID = 1
in settings.py as well. 并在settings.py中也添加SITE_ID = 1
。
In Django 1.7+, the preferred way of making DB changes is with the migrate management command: 在Django 1.7+中,进行数据库更改的首选方法是使用migration management命令:
./manage.py migrate
That should solve your problem. 那应该解决您的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.