在Heroku上进行Flask数据库迁移

10

我正在使用flask-script和flask-migrate进行数据库迁移,我的应用在本地可以正常运行。当我

运行时,
heroku run python manage.py db init

它创建了以下输出结果:
Running python manage.py db init on ⬢ fpds-scheduler... up, run.1290 (Free)
  Creating directory /app/migrations ... done
  Creating directory /app/migrations/versions ... done
  Generating /app/migrations/README ... done
  Generating /app/migrations/script.py.mako ... done
  Generating /app/migrations/alembic.ini ... done
  Generating /app/migrations/env.py ... done
  Please edit configuration/connection/logging settings in '/app/migrations/alembic.ini' before
  proceeding.

但是当我运行heroku run python manage.py db migrate时,出现了错误。
alembic.util.exc.CommandError: Path doesn't exist: 'migrations'.  Please use the 'init' command to create a new scripts folder.

当我运行heroku run bash并查看我的目录时,我发现没有migrations文件夹...。
我尝试使用命令--app fpds-scheduler,但似乎也不起作用。
我不确定哪里出了问题?
1个回答

21

不能在Heroku上创建迁移文件。文件系统是短暂的,任何通过编程方式写入的内容都将在调用之间丢失。

您需要在本地创建迁移文件,将其提交到版本控制,部署后才能在Heroku上运行它们。


所以明确一点,您在本地创建迁移文件夹,然后在Heroku上执行迁移/升级操作? - spitfiredd
是的,请执行 heroku local db init 然后提交结果。 - Daniel Roseman
20
你实际上想在本地执行 flask db initflask db migrate 命令,将其提交到你的 git 仓库中。然后在 Heroku 上,你只需要执行 heroku run flask db upgrade 命令即可。 - Miguel Grinberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接