“settings.DATABASES配置不正确”的错误与django的1.4执行执行syncdb(

2019-06-23 18:26发布

我创建了一个简单的Django 1.4的项目,我试图发出执行syncdb创建(Postgres的)DB模式。 我得到这个错误: -

Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/usr/local/lib/python2.6/dist-packages/django/core/management/__init__.py", line 443, in execute_from_command_line
utility.execute()
File "/usr/local/lib/python2.6/dist-packages/django/core/management/__init__.py", line 382, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python2.6/dist-packages/django/core/management/base.py", line 196, in run_from_argv
self.execute(*args, **options.__dict__)
File "/usr/local/lib/python2.6/dist-packages/django/core/management/base.py", line 232, in execute
output = self.handle(*args, **options)
File "/usr/local/lib/python2.6/dist-packages/django/core/management/base.py", line 371, in handle
return self.handle_noargs(**options)
File "/usr/local/lib/python2.6/dist-packages/django/core/management/commands/syncdb.py", line 57, in handle_noargs
cursor = connection.cursor()
File "/usr/local/lib/python2.6/dist-packages/django/db/backends/dummy/base.py", line 15, in complain
raise ImproperlyConfigured("settings.DATABASES is improperly configured. "
django.core.exceptions.ImproperlyConfigured: settings.DATABASES is improperly configured.Please supply the ENGINE value. Check settings documentation for more details.

我的settings.py文件看起来像: -

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

我可以连接到使用PSQL OK数据库 - 任何想法? 提前致谢 !

Answer 1:

这可能是Django是不能访问你觉得它使用settings.py文件。 尝试通过明确使用--settings指向的Django您的设置文件

./manage.py --settings=nameofproject.settings runserver/syncdb

如果这个工作的话,你就必须弄清楚为什么Django是输入错误的设置文件。

你已经从1.3升级到1.4的事故?



Answer 2:

对于我来说,我刚才已经使用Django 1.6类似的问题:

背景

使用Heroku的PostgreSQL数据库的Django 1.6项目的Heroku

我想直接在PostgreSQL服务器(如果你还没有使用PostgreSQL所以不要复制” .postgresql_psycopg2" 位)上开发

  • 没问题,使用本地PSQL数据库开发
  • 明白了错误,当我注释掉使用Heroku的DB行

     DATABASES['default'] = dj_database_url.config(default=os.getenv('DATABASE_URL')) 

最初的尝试是增加更多的细节,比如另一条线,

DATABASES['default']['ENGINE'] = 'django.db.backends.postgresql_psycopg2'

这并没有工作,虽然,因为那时的错误问我的名字,这也被拒绝。

最终,这解决了这个问题:

  1. 我跑“的Heroku配置”看到我的个人资料的格式呈现在我面前:

     postgres://user:pass@localhost/dbname 
  2. 我更新了settings.py文件,以反映这些细节:

     DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'your_heroku_db_name', 'USER': 'your_heroku_db_user_name', 'PASSWORD': 'your_heroku_password', 'HOST': 'ec2-23-21-133-106.compute-1.amazonaws.com', # Or something like this 'PORT': '5432', } } 

    即尖端是从https://stackoverflow.com/a/19719966/870121

    注:我的下一个计划是抽象的,这些回.ENV变量,而不是让他们看到在settings.py

  3. 然后我注释掉晚的线,

     # DATABASES['default'] = dj_database_url.config(default=os.getenv('DATABASE_URL')) 

    所以DATABASES在settings.py文件只指定一次

    这样的程序读取所需的一切连接到PostgreSQL数据库的Heroku

    例如,现在python manage.py syncdb为我工作


如果您想尝试本地开发,注释掉上面的一切,而是设置本地的PostgreSQL服务器会并取消上述的等值当地货币:

DATABASES = {
     'default': {
         'ENGINE': 'django.db.backends.postgresql_psycopg2',
         'NAME': 'cool01db',
         'USER': '', 
         'PASSWORD': '',
         'HOST': 'localhost', # '127.0.0.1' probably works also
         'PORT': '5432',
     }
 }

这是一个从https://stackoverflow.com/a/25962586/870121



Answer 3:

有在你的项目中的两个“settings.py”文件(如果你的操作系统是UNIX类):

  • 一个是在第一个目录
  • 一是在DIR / DIR

你需要写发动机第二( dir/dir/setting.py )。

祝好运!



Answer 4:

其中settings.py文件你更新? 我在第一次过的时候我没有读到Django的变化,从1.3到1.4这将导致双进口此相同的问题。 下面是摘录https://docs.djangoproject.com/en/1.4/releases/1.4/#updated-default-project-layout-and-manage-py 。 Django的最新版本(1.4.2目前)附带了一个更新的默认项目布局和manage.py文件的startproject命令管理命令和默认的项目布局发生了变化。

要解决你的错误,你应该使用正确的settings.py文件不是一个在主项目目录,它是项目目录中创建(具有相同的名称)的目录里面的一个。



Answer 5:

重新安装的Django为我做的伎俩(实际上取出卵子文件),如建议在下面的链接。 https://code.djangoproject.com/ticket/18058看来,升级为1.3〜1.4,似乎引起了很多这些问题。



文章来源: “settings.DATABASES is improperly configured” error performing syncdb with django 1.4