gpt4 book ai didi

python - 在 heroku 上运行 flask-migrate 会产生错误

转载 作者:太空狗 更新时间:2023-10-30 01:08:31 25 4
gpt4 key购买 nike

我正在尝试使用 flask-migrate 在本地对我的数据库进行版本控制,然后在生产环境 (Heroku) 中反射(reflect)这些变化。到目前为止,我成功地对本地数据库进行了版本控制和升级,所以现在我想在 Heroku 上反射(reflect)这一点。为此,我将最新的代码状态连同新创建的 migrations 文件夹和更新的 requirements.txt 一起推送到 Heroku。我看到依赖项已成功安装:

Successfully installed Flask-Migrate alembic Flask-Script Mako

然后,我尝试了:

$ heroku run python app/hello.py db upgrade

不幸的是我得到了这样的回应:

Running `python app/hello.py db upgrade` attached to terminal... up, run.4322
Traceback (most recent call last):
File "app/hello.py", line 37, in <module>
manager.run()
File "/app/.heroku/python/lib/python2.7/site-packages/flask_script/__init__.py", line 405, in run
result = self.handle(sys.argv[0], sys.argv[1:])
File "/app/.heroku/python/lib/python2.7/site-packages/flask_script/__init__.py", line 384, in handle
return handle(app, *positional_args, **kwargs)
File "/app/.heroku/python/lib/python2.7/site-packages/flask_script/commands.py", line 145, in handle
return self.run(*args, **kwargs)
File "/app/.heroku/python/lib/python2.7/site-packages/flask_migrate/__init__.py", line 97, in upgrade
config = _get_config(directory)
File "/app/.heroku/python/lib/python2.7/site-packages/flask_migrate/__init__.py", line 37, in _get_config
config.set_main_option('script_location', directory)
File "/app/.heroku/python/lib/python2.7/site-packages/alembic/config.py", line 142, in set_main_option
self.file_config.set(self.config_ini_section, name, value)
File "/app/.heroku/python/lib/python2.7/ConfigParser.py", line 753, in set
ConfigParser.set(self, section, option, value)
File "/app/.heroku/python/lib/python2.7/ConfigParser.py", line 396, in set
raise NoSectionError(section)
ConfigParser.NoSectionError: No section: 'alembic'

我用谷歌搜索找到了这可能是什么,看起来配置文件无法打开,但我不知道可以做些什么来解决这个问题。为什么这在本地有效,但在 Heroku 上却无效?

最佳答案

我为此苦苦挣扎了一段时间,甚至在 Heroku python 论坛上发帖,但到目前为止还没有回复。为了解决这个问题,我决定不在 Heroku 上远程运行迁移,而是在我的开发机器上运行迁移并传递生产数据库地址。所以我这样做:

  1. 将开发数据库与生产同步(使用 Heroku 时,您可以使用 heroku pg:pull 轻松完成此操作,但您必须在调用此方法之前删除本地数据库)
  2. 假设您的模型已经更新,请运行 python app.py db migrate重要:我在本地也开始收到原始错误,我发现我必须位于我的 app.py 所在的完全相同的目录中,否则我会收到错误。
  3. 检查您自动生成的迁移脚本
  4. 使用 python app.py db upgrade 升级您的本地数据库
  5. 更改应用的设置以使用生产数据库而不是本地开发数据库,​​然后再次运行 python app.py db upgrade

经过一番思考后,我突然意识到这可能就是该工具设计的工作方式。尽管能够从 Heroku 远程运行迁移仍然很好,但我会接受我的解决方案,因为它更快并且可以完成工作。

关于python - 在 heroku 上运行 flask-migrate 会产生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21529118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com