为什么Django抱怨我还没有设置我的ENGINE?
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'djangobb', # Or path to database file if using sqlite3.
'USER': 'root', # Not used with sqlite3.
'PASSWORD': 'root', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '', # Set to empty string for default. Not used with sqlite3.
}
}
任何想法?我不能manage.py运行执行syncdb命令:为什么Django抱怨我还没有设置我的ENGINE?
Environment:
Request Method: GET
Request URL: http://localhost:8000/admin/
Django Version: 1.2.1
Python Version: 2.5.4
Installed Applications:
['django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.sitemaps',
'django.contrib.admin',
'django.contrib.admindocs',
'registration',
'django_authopenid',
'djangobb_forum',
'djapian',
'messages']
Installed Middleware:
('django.middleware.cache.UpdateCacheMiddleware',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.csrf.middleware.CsrfMiddleware',
'django_authopenid.middleware.OpenIDMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware',
'django.middleware.transaction.TransactionMiddleware',
'djangobb_forum.middleware.LastLoginMiddleware',
'djangobb_forum.middleware.UsersOnline')
Traceback:
File "C:\Python25\Lib\site-packages\django\core\handlers\base.py" in get_response
80. response = middleware_method(request)
File "C:\Python25\Lib\site-packages\django\middleware\locale.py" in process_request
16. language = translation.get_language_from_request(request)
File "C:\Python25\Lib\site-packages\django\utils\translation\__init__.py" in get_language_from_request
90. return real_get_language_from_request(request)
File "C:\PYTHON25\lib\site-packages\django\utils\functional.py" in _curried
55. return _curried_func(*(args+moreargs), **dict(kwargs, **morekwargs))
File "C:\Python25\Lib\site-packages\django\utils\translation\__init__.py" in delayed_loader
36. return getattr(trans, real_name)(*args, **kwargs)
File "C:\Python25\Lib\site-packages\django\utils\translation\trans_real.py" in get_language_from_request
339. lang_code = request.session.get('django_language', None)
File "C:\Python25\Lib\site-packages\django\contrib\sessions\backends\base.py" in get
63. return self._session.get(key, default)
File "C:\Python25\Lib\site-packages\django\contrib\sessions\backends\base.py" in _get_session
172. self._session_cache = self.load()
File "C:\Python25\Lib\site-packages\django\contrib\sessions\backends\db.py" in load
20. expire_date__gt=datetime.datetime.now()
File "C:\Python25\lib\site-packages\django\db\models\manager.py" in get
132. return self.get_query_set().get(*args, **kwargs)
File "C:\Python25\Lib\site-packages\django\db\models\query.py" in get
336. num = len(clone)
File "C:\Python25\Lib\site-packages\django\db\models\query.py" in __len__
81. self._result_cache = list(self.iterator())
File "C:\Python25\Lib\site-packages\django\db\models\query.py" in iterator
269. for row in compiler.results_iter():
File "C:\Python25\Lib\site-packages\django\db\models\sql\compiler.py" in results_iter
672. for rows in self.execute_sql(MULTI):
File "C:\Python25\Lib\site-packages\django\db\models\sql\compiler.py" in execute_sql
717. sql, params = self.as_sql()
File "C:\Python25\Lib\site-packages\django\db\models\sql\compiler.py" in as_sql
56. out_cols = self.get_columns(with_col_aliases)
File "C:\Python25\Lib\site-packages\django\db\models\sql\compiler.py" in get_columns
185. col_aliases)
File "C:\Python25\Lib\site-packages\django\db\models\sql\compiler.py" in get_default_columns
273. r = '%s.%s' % (qn(alias), qn2(field.column))
File "C:\Python25\Lib\site-packages\django\db\models\sql\compiler.py" in quote_name_unless_alias
43. r = self.connection.ops.quote_name(name)
File "C:\Python25\lib\site-packages\django\db\backends\dummy\base.py" in complain
15. raise ImproperlyConfigured("You haven't set the database ENGINE setting yet.")
Exception Type: ImproperlyConfigured at /admin/
Exception Value: You haven't set the database ENGINE setting yet.
我把我的旧的方式和新途径,因此,它不是Django的特定版本:
DATABASE_ENGINE = 'django.db.backends.sqlite3'
DATABASE_NAME = '/path/to/db/foo.sqlite3'
DATABASE_USER = ''
DATABASE_PASSWORD = ''
DATABASE_HOST = ''
DATABASE_PORT = ''
DATABASES = {
'default': {
'ENGINE': DATABASE_ENGINE,
'NAME': DATABASE_NAME,
'USER': DATABASE_USER,
'PASSWORD': DATABASE_PASSWORD,
'HOST': DATABASE_HOST,
'PORT': DATABASE_PORT,
}
}
但是,是的,我'd仔细检查你的安装是否是你认为的版本。
UPDATE:
您可能试图导入从设置一些管理员模块中,并在设置导入管理模块。有时循环导入导致上述情况。
特别是,使用设置中的反向(“URL名称”)可能导致这一点,因为它最终迫使它来看看一些深层次暗的“网站”表...
UPDATE2 :
对不起,来解释上述:
- 的圆形进口是当从模块B模块A的进口,并在一定程度上,模块B也期间,需要从模块A的东西在某一点第二层次的深度,它通常以某种难以理解的方式失败。
- Reverse()是将url的名称(urls.py中的name =“foo”)转换回url本身的函数。这使得在设置或管理模块中并不总是可能的呼叫。
UPDATE3:
看着djangobb.org/ticket/81你指出,打破一些术语下来票,CSRF令牌是用于添加跨站请求伪造保护模板标签:
http://docs.djangoproject.com/en/dev/ref/contrib/csrf/
它一般是这样的,从我的一个项目到grep:
# grep -ri csrf .
./registration/login.html: <form method="post" action="{% url django.contrib.auth.views.login %}">{% csrf_token %}
虽然我不知道djapian是我自己,但通常意味着直接安装(通常是svn)中继 - 或者“最新的,在版本中检查,这比新的任何版本,并可能经过测试的官方版本“。通常,这需要执行一些操作,如svn checkout http://wherever.com/someproject/trunk/ ./someproject
,然后转到该目录进行安装。
+1:我们一直在关注整个凌晨:)。这是一个很好的建议,我需要返回并更新一些我们使用1.2创建的应用程序,但也可以使用w/1.1。 – sdolan 2010-07-14 18:30:25
:-)谢谢。当我从1.1移动到1.2时,这个人杀了我一会儿。还有一个从Python 2.6到2.4的反向移植让我感到非常沮丧,因为一些库依赖于“foo if bar else baz”语法。我最终不得不从头开始在一台虚拟主机上安装python以获得2.6。:-P – eruciform 2010-07-14 18:33:50
我已经尝试了两种配置方法--djangobb最初在settings.py中使用了前一种风格(我假设这是以前的1.1版数据库配置方法),但它又失败了。更新了 – 2010-07-14 18:33:53
你确定你正在运行django 1.2 w /新的数据库配置样式吗? – sdolan 2010-07-14 18:19:04
在数据库配置方面,1.1和1.2之间是否存在显着差异? Djangobb说它需要Django 1.1,但我之前安装了Django 1.2。那可能就在那里。 – 2010-07-14 18:24:22
是的,你在那里使用的配置是在将MultiDB支持添加到1.2时引入的。 – sdolan 2010-07-14 18:27:28