Heroku部署因缺少SQL表而失败

时间:2020-10-02 05:32:57

标签: python pandas sqlite heroku sqlalchemy

我在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:38‌disaster-message-triage‌‌app/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

查看我的仓库

我欢迎您提供有关如何进一步诊断此问题的建议。

1 个答案:

答案 0 :(得分:1)

我注意到的问题是您的 release 命令是在每次成功构建后执行的。

但是...发布命令是构建后的,而不是构建的一部分,这意味着一旦构建完成,当时文件的快照即成为正在运行的dyno的文件。

您可以通过运行heroku run bash,然后运行诸如cdls等bash命令来检查dyno文件结构。

注意:您通过这种方式所做的任何更改都是临时的,并且只能在此一次性会话中进行

您可以使用 bash buildpack (不确定是否存在)将发布脚本作为构建的一部分,也可以使用heroku提供的持久性postgres数据库。See here < / p>