我在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
查看我的仓库我欢迎您提供有关如何进一步诊断此问题的建议。
答案 0 :(得分:1)
我注意到的问题是您的 release 命令是在每次成功构建后执行的。
但是...发布命令是构建后的,而不是构建的一部分,这意味着一旦构建完成,当时文件的快照即成为正在运行的dyno的文件。
您可以通过运行heroku run bash
,然后运行诸如cd
,ls
等bash命令来检查dyno文件结构。
注意:您通过这种方式所做的任何更改都是临时的,并且只能在此一次性会话中进行
您可以使用 bash buildpack (不确定是否存在)将发布脚本作为构建的一部分,也可以使用heroku提供的持久性postgres数据库。See here < / p>