jef*_*ind 4 python migration django postgresql heroku
我一直在Heroku上开发,使用config变量来存储敏感和其他环境变量.在本地开发时,我在.env文件中镜像了这些变量.
我现在发现的是.env迁移过程中不加载文件中的变量.它们在运行本地Web服务器时heroku local加载,但不加载迁移.当我的本地应用程序仍在使用默认的sqlite3数据库时,这不是问题,因为sqlite默认数据库在设置文件中是"硬编码的".但是最近我想将本地Postgresql DB用于本地开发.好的,所以我将DATABASE_URL变量添加到我的.env文件中.
我无法将本地应用程序迁移到数据库.我发现这是因为.env文件内容未添加到os.environ映射duing迁移中.
为了测试,我在.env文件中添加了一个测试变量:
TEST="teeeest"
Run Code Online (Sandbox Code Playgroud)
然后在settings.py:
import os
import dj_database_url
if "TEST" not in os.environ:
raise Exception("No .env vars found.")
Run Code Online (Sandbox Code Playgroud)
我试过了python manage.py migrate:
文件"/Users/apple/heroku/b/b/settings.py",第16行,在引发Exception("No .env vars found.")例外:找不到.env变量.
但是我可以运行heroku local并且没有错误.我还做了进一步的测试,以确保.env变量在期间可用heroku local.
由于各种原因,我想在.env文件中设置我的本地数据库连接字符串,但目前似乎不可能.这是在heroku上django的正确行为吗? .env文件变量只能在运行服务器时访问,而不能用于迁移?
我终于想通了简单的运行python manage.py migrate没有加载.env文件变量.您需要在heroku local环境中运行命令:
heroku local:run python manage.py migrate
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1140 次 |
| 最近记录: |