【问题标题】:Play 2.0 scala tutorial - heroku failing due to evolution玩 2.0 scala 教程 - heroku 由于进化而失败
【发布时间】:2013-08-21 09:29:21
【问题描述】:

我正在关注 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)

有什么想法吗?

【问题讨论】:

    标签: scala playframework-2.0


    【解决方案1】:

    如果您使用 embed DB 或 PostgreSQL,Play 不支持手动应用进化...

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

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

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

    【讨论】:

    • 在更新我们的应用程序时使用进化的正确方法是什么?
    • 我最好的猜测是确保您的增量销售是保护性的..例如不删除但更新添加或调整值。通过良好的 IT 测试,您将能够毫无畏惧地自动应用演进
    【解决方案2】:

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

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

    ($PORT 和 $DATABASE_URL 将由 Heroku 端的环境变量填充)

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 我的 Build.scala 文件中确实有 PostgreSQL 的依赖项,并在我的 Procfile 中指定。但是,我确实发现了这个问题——我的 Procfile 中有错字,并且没有正确加载。绝对是菜鸟的错误!
      • 问题是由需要执行的进化脚本引起的。将进化脚本设置为自动执行可以解决此问题。
      猜你喜欢
      • 1970-01-01
      • 2012-09-15
      • 2012-03-15
      • 1970-01-01
      • 2020-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-23
      相关资源
      最近更新 更多