django - 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 插件,它的数据库凭证也可用。那么我需要做些什么改变呢?
解决方案
推荐阅读
- php - 无法导入 200 万行 mysql laravel 的 excel?
- cuda - PyCUDA Kernel 针对特定计算返回不一致的除法结果
- java - 'android.enableUnitTestBinaryResources' 已弃用
- list - TCL 按特殊字符分割字符串
- javascript - 如何将“选定”文本更改为仅出现在“使用 html 和 JavaScript”的输入标签中的“粗体/非粗体”
- python - 正则表达式直接在占位符下方提取数据
- sql - Postgres找到具有相同间隔的序列
- ip - 使用 ngrok 时如何获取传入请求的 IP?
- python - 从 CPython 文档中澄清“应该可以更改 1 的值”
- linux-kernel - 针对内核源代码交叉编译为 arm64,找不到头文件