【问题标题】:Django tutorial says I haven't set DATABASE_ENGINE setting yet... but I haveDjango 教程说我还没有设置 DATABASE_ENGINE 设置……但我有
【发布时间】:2010-06-01 06:17:15
【问题描述】:

我正在学习 Django 教程,并在运行初始 python manage.py syncdb 时收到以下错误:

Traceback (most recent call last):
File "manage.py", line 11, in <module>
  execute_manager(settings)
File "/Library/Python/2.6/site-packages/django/core/management/__init__.py", line 362 in execute_manager
  utility.execute()
File "/Library/Python/2.6/site-packages/django/core/management/__init__.py", line 303, in execute
  self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Library/Python/2.6/site-packages/django/core/management/base.py", line 195, in run_from_argv
  self.execute(*args, **options.__dict__)
File "/Library/Python/2.6/site-packages/django/core/management/base.py", line 222, in execute
  output = self.handle(*args, **options)
File "/Library/Python/2.6/site-packages/django/core/management/base.py", line 351, in handle
  return self.handle_noargs(**options)
File "/Library/Python/2.6/site-packages/django/core/management/commands/syncdb.py", line 49, in handle_noargs
  cursor = connection.cursor()
File "/Library/Python/2.6/site-packages/django/db/backends/dummy/base.py", line 15, in complain
  raise ImproperlyConfigured, "You haven't set the DATABASE_ENGINE setting yet."
django.core.exceptions.ImproperlyConfigured: You haven't set the DATABASE_ENGINE setting yet.

我的 settings.py 看起来像:

DATABASES = {
  'default': {
    'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
    'NAME': 'dj_tut',                      # Or path to database file if using sqlite3.
    'USER': '',                      # Not used with sqlite3.
    'PASSWORD': '',                  # 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.
  }
}

我猜这很简单,但为什么没有看到 ENGINE 设置?

【问题讨论】:

    标签: mysql django


    【解决方案1】:

    看起来您使用的是早期版本的 Django。设置数据库配置的方式来自 Django 1.2,但您得到的错误来自 1.1。如果您使用的是 1.1 版,请使用 this version of the tutorial

    【讨论】:

    • 谢谢,这肯定是问题所在。后续问题:我使用 --no-site-wrappers 创建了一个 virtualenvwrapper,然后安装了 Django。看来我在 virtualenvwrapper 中有 Django 1.2.1,但在我的全局站点包中有 Django 1.1.1。你知道为什么这个 settings.py 文件会引用全局站点包而不是安装在 virtualenv 中的那个吗?
    • 嗯,实际上是 manage.py 指的是全局版本而不是 virtualenv 版本 - 这些设置适合您在 virtualenv (1.2) 中的版本。愚蠢的问题:你激活 virtualenv 了吗?
    • 总是值得问这些愚蠢的问题,因为我很可能没有。我刚刚再次尝试(激活了virtualenv),现在又出现了另一个错误:django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb - 作为 Stackoverflow 的新手,我想我应该单独发布这个?感谢您的帮助。
    • 我正在使用 django 1.2 final,但我得到了同样的错误。
    • 也可能是插件过时引起的。我刚刚遇到了同样的错误,但是是由老式版本的 django 调试工具栏引起的。
    【解决方案2】:
    'ENGINE': 'mysql',
    'NAME': 'dj_tut',
    

    你会想要设置一个用户和密码。

    【讨论】:

      【解决方案3】:

      同样的问题经常发生在我身上,每次问题都是 stttings.py 和另一个模块之间的循环依赖

      【讨论】:

        【解决方案4】:

        在命令提示符下你应该写:

        edit settings.py
        

        然后会有一个新的模块来编辑你的

        settings.py
        

        【讨论】:

          猜你喜欢
          • 2010-12-26
          • 2010-12-11
          • 1970-01-01
          • 1970-01-01
          • 2018-10-25
          • 1970-01-01
          • 2010-10-30
          • 2020-07-23
          • 1970-01-01
          相关资源
          最近更新 更多