Play 2.0 scala教程 - 由于进化,heroku失败了

时间:2012-08-13 07:09:43

标签: scala playframework-2.0

我正在关注Scala的Play 2.0 tutorial

一切正常,直到我尝试在Heroku上推送并运行它。运行“git push heroku master”后,服务器崩溃了。检查日志,我看到以下内容:

Starting process with command `target/start -Dhttp.port=37849 -Xmx384m -Xss512k -XX:+UseCompressedOops`
2012-08-13T06:52:45+00:00 app[web.1]: Play server process ID is 2
2012-08-13T06:52:46+00:00 app[web.1]: [info] play - database [default] connected at jdbc:h2:mem:play
2012-08-13T06:52:46+00:00 app[web.1]: [warn] play - Your production database [default] needs evolutions! 
2012-08-13T06:52:46+00:00 app[web.1]: 
2012-08-13T06:52:46+00:00 app[web.1]: CREATE SEQUENCE task_id_seq;
2012-08-13T06:52:46+00:00 app[web.1]: label varchar(255)
2012-08-13T06:52:46+00:00 app[web.1]: CREATE TABLE task (
2012-08-13T06:52:46+00:00 app[web.1]: id integer NOT NULL DEFAULT nextval('task_id_seq'),
2012-08-13T06:52:46+00:00 app[web.1]: );
2012-08-13T06:52:46+00:00 app[web.1]: 
2012-08-13T06:52:46+00:00 app[web.1]: # --- Rev:1,Ups - c5e3eee
2012-08-13T06:52:46+00:00 app[web.1]: [warn] play - Run with -DapplyEvolutions.default=true if you want to run them automatically (be careful)
2012-08-13T06:52:46+00:00 app[web.1]: Oops, cannot start the server.
2012-08-13T06:52:46+00:00 app[web.1]: PlayException: Database 'default' needs evolution! [An SQL script need to be run on your database.]
2012-08-13T06:52:46+00:00 app[web.1]:   at play.api.db.evolutions.EvolutionsPlugin$$anonfun$onStart$1.apply(Evolutions.scala:422)

有什么想法?

3 个答案:

答案 0 :(得分:16)

如果您使用嵌入式数据库或PostgreSQL,Play不支持手动应用进化......

但是,如错误消息中所述,您可以在application.conf文件中激活配置密钥: applyEvolutions.default=true

启用会告诉Play自动 ly 应用所有进化!

但请小心处理您的更新脚本...如果您删除并重新创建每个增量版本=>你将杀死所有数据!

答案 1 :(得分:3)

安迪解决方案的替代方案可能是将以下内容添加到heroku procfile

web: target/start -Dhttp.port=${PORT} -DapplyEvolutions.default=true
  -Ddb.default.driver=org.postgresql.Driver -Ddb.default.url=$DATABASE_URL

(Heroku方面的环境变量将填充$ PORT和$ DATABASE_URL)

答案 2 :(得分:-6)

您需要一个数据库。 heroku中有免费插件