我已将应用程序部署在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中查看我的仓库
我欢迎您提供有关如何进一步诊断此问题的建议。
我注意到的问题是,每次成功构建后都会执行您的发布命令。
但是... Release命令是构建后的,而不是构建的一部分,这意味着构建完成后,当时的文件快照即成为运行中的dynos的文件。
您可以通过运行检查赛道的文件结构heroku run bash
,然后运行bash命令,如cd
,ls
等
注意:您以这种方式进行的任何更改都是临时的,并且仅在此一次性会话中持续
您可以通过使用bash buildpack(不确定它是否存在)使发布脚本成为构建的一部分,或者使用heroku提供的持久性postgres数据库。看这里
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句