首页 > 解决方案 > Heroku 运行 python manage.py makemigartions --app=正在抛出 ImproperlyConfigured:设置 DATABASE_NAME 环境变量

问题描述

我已经使用 Postgres 的这个数据库设置将我的 django 项目推送到了 GitHub:

import dj_database_url
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': env("DATABASE_NAME"),
        'USER': env("DATABASE_USER"),
        'PASSWORD': env("DATABASE_PASSWORD"),
        'HOST': env("DATABASE_HOST"),
        'PORT': env("DATABASE_PORT"),
    }
}
DATABASES['default'] = dj_database_url.config(conn_max_age=600, ssl_require=True)

然后我跑了git push heroku main。构建成功。然后当我运行heroku run python manage.py makemigrations --app=<app_name>它时抛出这个错误:

Running python manage.py makemigrations on ⬢ stackshepherd... up, run.6229 (Free)
/app/.heroku/python/lib/python3.8/site-packages/environ/environ.py:628: UserWarning: /app/stackshepherdbe/.env doesn't exist - if you're not configuring your environment separately, create one.
  warnings.warn(
/app/.heroku/python/lib/python3.8/site-packages/environ/environ.py:628: UserWarning: /app/stackshepherdbe/.env doesn't exist - if you're not configuring your environment separately, create one.
  warnings.warn(
Traceback (most recent call last):
  File "/app/.heroku/python/lib/python3.8/site-packages/environ/environ.py", line 273, in get_value
    value = self.ENVIRON[var]
  File "/app/.heroku/python/lib/python3.8/os.py", line 675, in __getitem__
    raise KeyError(key) from None
KeyError: 'DATABASE_NAME'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    main()
  File "manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "/app/.heroku/python/lib/python3.8/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
    utility.execute()
  File "/app/.heroku/python/lib/python3.8/site-packages/django/core/management/__init__.py", line 395, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/app/.heroku/python/lib/python3.8/site-packages/django/core/management/base.py", line 330, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/app/.heroku/python/lib/python3.8/site-packages/django/core/management/base.py", line 368, in execute
    self.check()
  File "/app/.heroku/python/lib/python3.8/site-packages/django/core/management/base.py", line 392, in check
    all_issues = checks.run_checks(
  File "/app/.heroku/python/lib/python3.8/site-packages/django/core/checks/registry.py", line 70, in run_checks
    new_errors = check(app_configs=app_configs, databases=databases)
  File "/app/.heroku/python/lib/python3.8/site-packages/django/core/checks/caches.py", line 14, in check_default_cache_is_configured
    if DEFAULT_CACHE_ALIAS not in settings.CACHES:
  File "/app/.heroku/python/lib/python3.8/site-packages/django/conf/__init__.py", line 82, in __getattr__
    self._setup(name)
  File "/app/.heroku/python/lib/python3.8/site-packages/django/conf/__init__.py", line 69, in _setup
    self._wrapped = Settings(settings_module)
  File "/app/.heroku/python/lib/python3.8/site-packages/django/conf/__init__.py", line 170, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "/app/.heroku/python/lib/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 783, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/app/stackshepherdbe/settings.py", line 172, in <module>
    'NAME': env("DATABASE_NAME"),
  File "/app/.heroku/python/lib/python3.8/site-packages/environ/environ.py", line 123, in __call__
    return self.get_value(var, cast=cast, default=default, parse_default=parse_default)
  File "/app/.heroku/python/lib/python3.8/site-packages/environ/environ.py", line 277, in get_value
    raise ImproperlyConfigured(error_msg)
django.core.exceptions.ImproperlyConfigured: Set the DATABASE_NAME environment variable

我什至尝试重命名'NAME': env("DATABASE_NAME"),'NAME': env("Databse"),Heroku-Postgres Database Credentials 中给出的名称。但它出现了类似的错误!

我已经安装了 heroku-postgres 插件,它的数据库凭证也可用。那么我需要做些什么改变呢?

标签: djangopostgresqlheroku

解决方案


推荐阅读