【问题标题】:settings.DATABASES is improperly configured. Please supply the NAME valuesettings.DATABASES 配置不正确。请提供名称值
【发布时间】:2015-04-23 01:26:17
【问题描述】:

我知道以前有人问过类似的问题。但这都是关于引擎价值的。有人知道如何使用 NAME 值解决此错误吗?我部署到heroku,一切正常。但是,在本地,它给了我这个错误 这是回溯:

Traceback:
File "/Users/qiaoweiliu/.virtualenvs/heroku/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  132.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/qiaoweiliu/Google Drive/heroku/luxingnan/views.py" in home
  17.         return render(request,'luxingnan/home.html',{'auth_form':auth_form, 'user_form':user_form,'cars':cars,'next_url': '/',})
File "/Users/qiaoweiliu/.virtualenvs/heroku/lib/python2.7/site-packages/django/shortcuts.py" in render
  67.             template_name, context, request=request, using=using)
File "/Users/qiaoweiliu/.virtualenvs/heroku/lib/python2.7/site-packages/django/template/loader.py" in render_to_string
  99.         return template.render(context, request)
File "/Users/qiaoweiliu/.virtualenvs/heroku/lib/python2.7/site-packages/django/template/backends/django.py" in render
  74.         return self.template.render(context)
File "/Users/qiaoweiliu/.virtualenvs/heroku/lib/python2.7/site-packages/django/template/base.py" in render
  209.                     return self._render(context)
File "/Users/qiaoweiliu/.virtualenvs/heroku/lib/python2.7/site-packages/django/template/base.py" in _render
  201.         return self.nodelist.render(context)
File "/Users/qiaoweiliu/.virtualenvs/heroku/lib/python2.7/site-packages/django/template/base.py" in render
  903.                 bit = self.render_node(node, context)
File "/Users/qiaoweiliu/.virtualenvs/heroku/lib/python2.7/site-packages/django/template/debug.py" in render_node
  79.             return node.render(context)
File "/Users/qiaoweiliu/.virtualenvs/heroku/lib/python2.7/site-packages/django/template/loader_tags.py" in render
  135.         return compiled_parent._render(context)
File "/Users/qiaoweiliu/.virtualenvs/heroku/lib/python2.7/site-packages/django/template/base.py" in _render
  201.         return self.nodelist.render(context)
File "/Users/qiaoweiliu/.virtualenvs/heroku/lib/python2.7/site-packages/django/template/base.py" in render
  903.                 bit = self.render_node(node, context)
File "/Users/qiaoweiliu/.virtualenvs/heroku/lib/python2.7/site-packages/django/template/debug.py" in render_node
  79.             return node.render(context)
File "/Users/qiaoweiliu/.virtualenvs/heroku/lib/python2.7/site-packages/django/template/loader_tags.py" in render
  65.                 result = block.nodelist.render(context)
File "/Users/qiaoweiliu/.virtualenvs/heroku/lib/python2.7/site-packages/django/template/base.py" in render
  903.                 bit = self.render_node(node, context)
File "/Users/qiaoweiliu/.virtualenvs/heroku/lib/python2.7/site-packages/django/template/debug.py" in render_node
  79.             return node.render(context)
File "/Users/qiaoweiliu/.virtualenvs/heroku/lib/python2.7/site-packages/django/template/defaulttags.py" in render
  328.             if match:
File "/Users/qiaoweiliu/.virtualenvs/heroku/lib/python2.7/site-packages/django/db/models/query.py" in __nonzero__
  170.         return type(self).__bool__(self)
File "/Users/qiaoweiliu/.virtualenvs/heroku/lib/python2.7/site-packages/django/db/models/query.py" in __bool__
  166.         self._fetch_all()
File "/Users/qiaoweiliu/.virtualenvs/heroku/lib/python2.7/site-packages/django/db/models/query.py" in _fetch_all
  965.             self._result_cache = list(self.iterator())
File "/Users/qiaoweiliu/.virtualenvs/heroku/lib/python2.7/site-packages/django/db/models/query.py" in iterator
  238.         results = compiler.execute_sql()
File "/Users/qiaoweiliu/.virtualenvs/heroku/lib/python2.7/site-packages/django/db/models/sql/compiler.py" in execute_sql
  827.         cursor = self.connection.cursor()
File "/Users/qiaoweiliu/.virtualenvs/heroku/lib/python2.7/site-packages/django/db/backends/base/base.py" in cursor
  162.             cursor = self.make_debug_cursor(self._cursor())
File "/Users/qiaoweiliu/.virtualenvs/heroku/lib/python2.7/site-packages/django/db/backends/base/base.py" in _cursor
  135.         self.ensure_connection()
File "/Users/qiaoweiliu/.virtualenvs/heroku/lib/python2.7/site-packages/django/db/backends/base/base.py" in ensure_connection
  130.                 self.connect()
File "/Users/qiaoweiliu/.virtualenvs/heroku/lib/python2.7/site-packages/django/db/backends/base/base.py" in connect
  118.         conn_params = self.get_connection_params()
File "/Users/qiaoweiliu/.virtualenvs/heroku/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py" in get_connection_params
  154.                 "settings.DATABASES is improperly configured. "

Exception Type: ImproperlyConfigured at /
Exception Value: settings.DATABASES is improperly configured. Please supply the NAME value.

这是我的设置.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

DATABASES['default'] =  dj_database_url.config()

DATABASES['default']['ENGINE'] = 'django_postgrespool'

【问题讨论】:

    标签: python django heroku


    【解决方案1】:
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        }
    }
    

    就够了。如果你想使用django_postgrespool,你可以在上面编辑它。

    但是您的以下几行:

    DATABASES['default'] =  dj_database_url.config()
    DATABASES['default']['ENGINE'] = 'django_postgrespool'
    

    只是覆盖上面的标准DATABASE 设置。所以你需要删除这两行(或者通过dj_database_url定义并删除上面的sn-p)。

    【讨论】:

    • 它有效。但我更喜欢在开发和生产中使用相同的数据库。还有其他方法吗?这让我很困惑,因为我的 DATABASE_URL 包含用户名、密码和数据库名称,dj_database_url 只是无法获取数据库名称
    • 只是设置了DATABASE 并没有让您在开发和生产中使用相同的数据库?我这样做了,它奏效了
    【解决方案2】:
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        }
    }
    
    import dj_database_url
    
    db_config = dj_database_url.config()
    if db_config:
        DATABASES['default'] =  db_config
    

    【讨论】:

    • 太棒了!感谢您的提示
    【解决方案3】:

    在我的情况下,我将带有密码的整个 DB url 存储在环境变量中。我已将密码设置为包含@,这与字符串其余部分的解析混淆,因此未检测到名称参数。只是将密码更改为不包含任何 @ 符号。

    【讨论】:

      猜你喜欢
      • 2020-04-24
      • 2013-11-28
      • 2014-11-22
      • 2017-12-17
      • 1970-01-01
      • 2012-04-08
      • 1970-01-01
      • 2020-12-10
      • 1970-01-01
      相关资源
      最近更新 更多