获取数据库配置不正确。请提供名称值错误

时间:2017-01-18 17:26:37

标签: python django database postgresql

我遇到了这个问题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,
  }
 }

和prod数据库

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', ""),
  }
}

如何解决这个问题?

1 个答案:

答案 0 :(得分: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,
  }
}

这将是硬编码&#39;你的假凭证。然后,您可以部署此应用程序,并查看您获得的错误。