【问题标题】:Play framework ignores evolution script播放框架忽略进化脚本
【发布时间】:2015-09-26 12:53:52
【问题描述】:

我目前正在介绍 SQL 数据库的基础知识并在游戏框架中使用它们。我已经创建了 postgres 数据库并在我的 application.conf 中成功配置了它

db.default.driver=org.postgresql.Driver
db.default.url="jdbc:postgresql://database.example.com/playdb"
db.default.user=postgres
db.default.password=qwerty

我还在 conf/evolutions/evolutions/default 目录中创建了 1.sql 文件,并在那里编写了相同的示例 SQL 代码来创建简单的表。问题是 play 似乎忽略了这个文件的存在。当我运行我的服务器并连接到 localhost 时,Play 应该会询问我是否希望将我的脚本应用于我的数据库。不幸的是,我不是,play 唯一要做的就是加载我的主页(1.sql 中的 CREATE TABLE 没有执行,我没有创建任何表)。任何想法我做错了什么?

【问题讨论】:

  • @m-z 我使用的是 2.4.3
  • 对不起,但我不得不问:你是否禁用了进化?签入conf/application.conf“evolutionplugin=disabled”应该被注释掉
  • 另外,一个题外话提示:你可以考虑使用类似的东西:github.com/flyway/flyway-play
  • @Teolha 我当然没有
  • 你的build.sbt 中有进化依赖吗? libraryDependencies += evolutions

标签: sql postgresql scala playframework


【解决方案1】:

确保您的build.sbt 文件中有以下行

libraryDependencies += evolutions

【讨论】:

    【解决方案2】:

    在我的例子中,进化忽略了 2.sql(和 1.sql)。

    为了解决这个问题,我必须从 1.sql 中删除这些 cmets:

    #--- Created by Ebean DDL
    # To stop Ebean DDL generation, remove this comment and start using Evolutions
    

    并添加我自己的评论,例如:

    # Initial version
    

    另外,在 VI 中查看 1.sql 文件发现它包含 ^M 必须删除的字符

    经过这两个步骤,evolution 停止覆盖 1.sql 并最终使用提供的 2.sql 文件。

    即使您不执行数据库更新,Evolution 似乎也会覆盖 1.sql,因此请确保您正在编辑原始版本。

    我正在使用 play 2.4.1。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-10
      • 2018-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多