我在Play Framework 2中使用Ebean来存储一些基本信息。这个应用程序被推送到Heroku。一切似乎都很好,我可以用Ebean写/读,但几个小时后,当我访问应用程序时,存储的所有内容都消失了。
从this source我知道,当不经常访问应用程序时,需要启动它。这意味着,运行应用程序在空闲一段时间后会关闭,对吗?
很少访问的免费应用程序需要几秒钟(有时更长)才能启动 - 如果您需要应用程序即使在第一次访问时也能快速响应 <升级到付费计划/ p>
我发现这个问题No permanent filesystem for Heroku?解释了Heroku上没有永久文件系统。
因此,Ebean将数据存储在文件系统上,这意味着它们会被删除,因为Heroku上没有永久文件系统。
我应该提一下,我在Heroku上使用免费应用程序。 有什么建议如何解决这个问题? 也许我错过了一些配置或其他东西......
修改
我使用保存在文件中的H2数据库。
答案 0 :(得分:0)
为什么不在你的免费计划中使用Heroku的Postgresql?
在最近几天有一些关于使用它的问题,所以你应该没有配置它的问题,即:https://stackoverflow.com/a/12196800/1066240
答案 1 :(得分:0)
来自heroku docs:
已扩展网络动态数据量的应用程序(运行网络的动态数据库) 进程类型)这样只有一个web dyno正在运行 网络dyno在一小时不活动后闲置了。 ...那些应用程序 有超过1个web dyno运行永远不会闲置。工人dynos 永远不会闲着。
关于文件系统生命周期:
短暂的文件系统
每个dyno都有自己的短暂文件系统,并带有最近部署代码的全新副本。在dyno的生命周期中,它的运行进程可以使用文件系统作为临时暂存器,但是没有任何其他进程可以看到写入的文件 dyno和所写的任何文件都会在dyno出现的那一刻被丢弃 停止或重新启动。
因此,由于您将H2与文件系统中存储的文件一起使用,因此在一小时不活动后数据将会丢失。
为了存储您的数据,我强烈建议您使用免费提供10.000行的Postgres Heroku addon。