【问题标题】:How to avoid creating schema with PlayFramework如何避免使用 PlayFramework 创建架构
【发布时间】:2012-07-24 07:23:29
【问题描述】:

我有一个由另一个 web 应用程序管理的现有数据库架构。我正在创建的 playframework 需要读取/写入此现有架构,但它会在播放启动时删除并重新创建表。

如何关闭表创建?

更新:

  • 玩 1.2.5
  • mysql

更新2:

@Entity(name="mytable_name")
public class Sample extends Model {    
   public Integer some_value;
   public String fullname;
}

在控制器方法中...

List<Sample> list = Sample.findAll();

表存在数据,我运行“播放测试”,点击调用 findAll 的控制器方法,表被删除,重新创建,现在为空。

模式在文本字段大小不同的数据类型中不完全匹配。我期待查询错误,但不是这个。

【问题讨论】:

    标签: playframework playframework-1.x


    【解决方案1】:

    如果您使用 JPA 的 Play 1.x,您可以将此行放在 application.conf 中

    jpa.ddl=none
    

    【讨论】:

    • 我试过了,但遗憾的是,它并没有改变结果。它仍然删除表及其所有内容,然后再次创建它,为空。它在调用 findAll() 之后执行此操作
    • @darren:您是否按照我在其他答案中的建议禁用了进化?
    • 您正在测试模式下运行您的应用程序,因此请确保您没有像 %test.jpa.ddl=...这样的设置,并确保您没有一些“Fixtures. deleteDatabase()" 在您的测试中的@Before 方法中。另外一点,如果您处于测试模式,请在此模式下使用可以删除的特定数据库
    • 是的,我也检查了所有优点和所有内容。我只是在生产模式下运行它,它在查询中报告了查询错误,但没有破坏表。无论开发模式下的设置如何,似乎播放都会重新创建时间表。不幸的是,这将使这项任务更难测试。
    • 找到了!它隐藏在 %test 语句的中间。我错过了,以为他们被评论了。生成的配置文件底部有 %test.jpa.ddl=create。
    【解决方案2】:

    来自官方evolutions' documentation

    如果在 存在 application.conf 和进化脚本。您可以禁用 他们通过将evolutions.enabled 设置为false。例如当测试 设置自己的数据库,您可以禁用进化进行测试 环境。

    【讨论】:

    • 它是 2.0 吗?如果是的话如何禁用进化呢?
    • @gaurav 这是 Play 1 示例,对于 Play 2,请查看其文档:playframework.org/documentation/2.0.4/Evolutions |您需要在 application.conf 文件中取消注释此行:evolutionplugin=disabled |下次单独写问题
    猜你喜欢
    • 1970-01-01
    • 2020-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-13
    • 2019-07-16
    相关资源
    最近更新 更多