【问题标题】:Getting Database is improperly configured .Please supply the name value error获取数据库配置不正确。请提供名称值错误
【发布时间】:2017-01-18 17:26:36
【问题描述】:

我遇到了这个问题settings.DATABASES is improperly configured. Please supply the NAME value,但它对我不起作用。


在应用 python manage.py makemigrations 时,出现错误

Traceback (most recent call last):
File "manage.py", line 22, in <module>
execute_from_command_line(sys.argv)
File "/home/rishav/EvalAI/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 367, in  execute_from_command_line
utility.execute()
File "/home/rishav/EvalAI/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 359, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/rishav/EvalAI/venv/local/lib/python2.7/site-packages/django/core/management/base.py", line 294, in run_from_argv
self.execute(*args, **cmd_options)
File "/home/rishav/EvalAI/venv/local/lib/python2.7/site-packages/django/core/management/base.py", line 345, in execute
output = self.handle(*args, **options)
File "/home/rishav/EvalAI/venv/local/lib/python2.7/site-packages/django/core/management/commands/makemigrations.py", line 106, in handle
loader.check_consistent_history(connection)
File "/home/rishav/EvalAI/venv/local/lib/python2.7/site-packages/django/db/migrations/loader.py", line 276, in check_consistent_history
applied = recorder.applied_migrations()
File "/home/rishav/EvalAI/venv/local/lib/python2.7/site-packages/django/db/migrations/recorder.py", line 65, in applied_migrations
self.ensure_schema()
File "/home/rishav/EvalAI/venv/local/lib/python2.7/site-packages/django/db/migrations/recorder.py", line 52, in ensure_schema
if self.Migration._meta.db_table in self.connection.introspection.table_names(self.connection.cursor()):
File "/home/rishav/EvalAI/venv/local/lib/python2.7/site-packages/django/db/backends/base/base.py", line 233, in cursor
cursor = self.make_cursor(self._cursor())
File "/home/rishav/EvalAI/venv/local/lib/python2.7/site-packages/django/db/backends/base/base.py", line 204, in _cursor
self.ensure_connection()
File "/home/rishav/EvalAI/venv/local/lib/python2.7/site-packages/django/db/backends/base/base.py", line 199, in ensure_connection
self.connect()
File "/home/rishav/EvalAI/venv/local/lib/python2.7/site-packages/django/db/backends/base/base.py", line 170, in connect
conn_params = self.get_connection_params()
File "/home/rishav/EvalAI/venv/local/lib/python2.7/site-packages/django/db/backends/postgresql/base.py", line 158, in get_connection_params
"settings.DATABASES is improperly configured. "
 django.core.exceptions.ImproperlyConfigured: settings.DATABASES is improperly configured. Please supply the NAME value.

我的开发数据库

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.postgresql_psycopg2',
    'NAME': 'evalai',
    'USER': 'rishav',
    'PASSWORD': 'rishav',
    'HOST': 'localhost',
    'PORT': 5432,
  }
 }

还有产品数据库

DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.postgresql_psycopg2',
    'NAME': os.environ.get('RDS_DB_NAME', ""),
    'USER': os.environ.get('RDS_USERNAME', ""),
    'PASSWORD': os.environ.get('RDS_PASSWORD', ""),
    'HOST': os.environ.get('RDS_HOSTNAME', ""),
    'PORT': os.environ.get('RDS_PORT', ""),
  }
}

如何解决这个问题?

【问题讨论】:

  • 您尚未解释如何应用这些开发和产品配置。
  • 其实它是一个我正在努力贡献的开源项目
  • 但是确定使用这两个 DATABASES 设置中的哪一个的代码是什么?
  • 请原谅我的无知,但我不知道。这是我正在尝试贡献的项目github.com/Cloud-CV/EvalAI
  • 我刚刚发现在我的prod文件中Debug=False。这是否意味着它会在部署时使用,而dev.py将在我们构建时使用?

标签: python django database postgresql


【解决方案1】:

听起来您的生产环境变量可能未设置 - 我怀疑这是正在发生的事情。

登录到您的生产服务器并确保您的 Django 进程可以访问 RDS_DB_NAMERDS_USERNAME 等作为环境变量。

ALSO:如果您遇到问题,您可能想尝试硬编码假凭据,而不是使用环境变量。这至少会让你进入下一个错误,应该是无效的凭据或类似的东西。这将确认环境变量是问题所在并且需要修复。

更新:如果您想尝试硬编码凭据,请为您的生产数据库配置执行以下操作:

DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.postgresql_psycopg2',
    'NAME': 'test',
    'USER': 'test',
    'PASSWORD': 'test',
    'HOST': 'localhost',
    'PORT': 5432,
  }
}

这将“硬编码”您的虚假凭据。然后,您可以部署此应用程序并查看您遇到了什么错误。

【讨论】:

  • 抱歉我的无知,但你能告诉我如何确保 django 可以访问环境变量
  • 如果您登录到运行 Django 项目的服务器,然后以运行 Django 应用程序的用户帐户登录,您可以使用$ echo RDS_DB_NAME 语法在命令行上查看环境变量.如果你没有看到那里的值,这意味着环境变量不存在。
  • 它正在打印与我呼应的相同值
  • 查看我的帖子,试试我在 ALSO 部分中提到的内容。
  • 好的,刚刚更新了我的帖子,其中包含有关硬编码您的凭据以进行测试的信息。
猜你喜欢
  • 2020-04-24
  • 1970-01-01
  • 2021-03-25
  • 2021-10-21
  • 2013-11-28
  • 2017-04-21
  • 2017-12-17
  • 2014-11-22
  • 2012-07-12
相关资源
最近更新 更多