如何解决Heroku 不会在 Django 中迁移模型
我在 Heroku 上部署了一个 Django 应用程序。 我正在尝试使用 Heroku Postgres 插件将数据库从 MysqL 切换到 Postgres
我删除了所有迁移并运行 manage.py makemigrations 以获得干净的迁移日志。 然后我提交并推送。
如果我在本地机器上运行 manage.py migrate,这就是我得到的: “经理”的迁移:
manager/migrations/0001_initial.py
- Create model AbiMapping
- Create model MissingContracts
- Create model TempEmailAccounts
- Create model UnsupportedMetaContracts
- Create model Users
- Create model Passwords
- Create model ContractMapping
- Create model Tokens
我将此命令添加到 procfile 以便在我推送到 Heroku 时运行 migrate:
release: python3 manage.py migrate
推送到 Heroku 时,迁移调用有效,但不会迁移我在应用程序中拥有的模型:
remote: Verifying deploy... done.
remote: Running release command...
remote:
remote: Operations to perform:
remote: Apply all migrations: admin,auth,contenttypes,manager,sessions
remote: Running migrations:
remote: No migrations to apply.
这是我设置数据库的方式 settings.py:
.env 在本地机器上设置环境变量。在 heroku 数据库环境变量是从环境加载的,因为没有 .env
dotenv_file = os.path.join(BASE_DIR,".env")
if os.path.isfile(dotenv_file):
dotenv.load_dotenv(dotenv_file)
设置数据库:
DATABASES = {}
DATABASES['default'] = dj_database_url.config(conn_max_age=600)
django_on_heroku.settings(locals())
似乎该数据库确实存在于heroku中:
$ heroku config
=== frame-zero Config Vars
DATABASE_URL: postgres://<details of my database address and credentials>
谢谢
解决方法
已经解决了here。诀窍是首先在 Heroku Dyno 上运行 bash。首先运行 Heroku run bash
,然后在 bash 窗口中运行 Python manage.py makemigrations
,然后运行 Python manage.py migrate
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。