python - Heroku 部署因缺少 SQL 表而失败
问题描述
我在 Heroku 上部署了我的应用程序,但我正在努力解决我到达那里的错误消息,但不是在我的本地机器上。(尽管环境不同,但它们都运行完全相同的代码。一个重要的区别是我在本地构建在我执行的同一台机器上。Heroku 没有。)
我插入了一些试图隔离问题的打印语句。在我的本地机器上运行heroku local
这些消息出来:
6:06:38 PM web.1 | DisasterResponse.db successfully opened.
6:06:38 PM web.1 | Schema Names: ['main']
6:06:38 PM web.1 | Table Names: ['MessageCategorization']
这很棒。我在发布脚本中创建了表格“MessageCategorization”。不幸的是,当我在 Heroku dyno 上运行代码时,该表丢失了。相同的行出来:
Oct 01 19:51:38disaster-message-triageapp/web.1 DisasterResponse.db successfully opened.
Oct 01 19:51:38 disaster-message-triage app/web.1 Schema Names: ['main']
Oct 01 19:51:38 disaster-message-triage app/web.1 Table Names: []
在这里,您可以看到模式“main”存在,但我没有“MessageCategorization”表。
如果您好奇,可以在https://github.com/manifolded/FigureEightDisasterResponse查看我的仓库
我欢迎有关如何进一步诊断此问题的建议。
解决方案
我注意到的问题是每次成功构建后都会执行您的发布命令。
但是... 发布命令是构建后的命令,而不是构建的一部分,这意味着一旦您的构建完成,当时的文件快照就是运行测功机的文件。
您可以通过运行检查 dyno 文件结构heroku run bash
,然后运行 bash 命令,如cd
、ls
等。
注意:您以这种方式所做的任何更改都是临时的,并且仅在此一次性会话期间持续
您可以使用bash buildpack(不确定它是否存在)将发布脚本作为构建的一部分,或者使用 heroku 提供的持久 postgres 数据库。看这里
推荐阅读
- python - Django 视图未在数据库中创建记录
- python - Pyspark 3.1.1 使用 kafka 直接流式传输?
- javascript - 如何从数组中推送标准变量以根据特定日期计算预订日?
- aeron - 是否可以从 Aeron Cluster 重播?
- python - Python 测试和导入 - 导入错误
- java - 如何将共享首选项中的令牌添加到拦截器
- sql - 创建 SQL 视图以查询节点是否是特定节点的后代
- excel - SSRS 报表导出到 Excel 不显示换行文本
- javascript - 试图将“点”值绑定到“玩家名称”
- reactjs - React:处理状态中的对象数组