java - 如何让 Play 框架应用程序在执行 Controller CRUD API 方法之前运行 SQL 脚本?

标签 java h2 slick play-framework-2.7

我正在创建一个新的 play 框架应用程序并使用 slick 连接到 h2 数据库。但是当我运行应用程序并访问数据时,它说找不到表。我希望它应该运行 conf/evolutions/default 文件夹中提供的 1.sql 文件。

基本上 play.evolutions 不起作用。

以下是我的 application.conf 文件

slick.dbs.default.driver = "slick.jdbc.MySQLProfile$"
slick.dbs.default.db.driver = "com.mysql.cj.jdbc.Driver"
slick.dbs.default.db.url = "jdbc:mysql://localhost:3306/playscalaslickexample"
slick.dbs.default.db.user = ""
slick.dbs.default.db.password = ""

# Evolutions
# ~~~~~
# You can disable evolutions if needed
play.evolutions.enabled=true
play.evolutions.autoApply=true

# You can disable evolutions for a specific datasource if necessary
play.evolutions.db.default.enabled = true

我在 evolutions.default 文件夹中有 1.sql 文件

我还尝试更改文件夹路径,例如evolutions.playscalaslickexample。我仍然没有看到任何变化。

最佳答案

将evolutions 和jdbc 添加到您的依赖项列表中。此外,1.sql 脚本应位于应用程序的 conf/evolutions/{database name} 或 conf/evolutions/default 目录中。进化会自动激活。如果您的数据库架构不是最新的,您需要启动应用程序并在浏览器上尝试 localhost:9000,此时将出现一个错误页面,您可以通过运行相应的 SQL 脚本来同步数据库架构。

您还可以引用文档https://www.playframework.com/documentation/2.7.x/Evolutions

请按照以下步骤操作,这可能会对您有所帮助

  1. 将1.sql保留在evolutions->default中
  2. 在 application.conf 中添加以下行

    play.evolutions.enabled = false

  3. 在conf中创建test.conf,如果您使用mysql,请在test.conf中复制以下行

    slick.dbs.default.driver = "slick.driver.MySQLDriver$" slick.dbs.default.db.url = "jdbc:h2:mem:test;MODE=MySQL;DATABASE_TO_UPPER=false;DB_CLOSE_DELAY=-1" slick.dbs.default.db.user = "" slick.dbs.default.db.password = ""

  4. 在 build.sbt 中添加以下行,

    测试中的javaOptions += "-Dconfig.file=conf/test.conf"

    库依赖++= Seq(进化)

关于java - 如何让 Play 框架应用程序在执行 Controller CRUD API 方法之前运行 SQL 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57854118/

相关文章:

java - 由 : java. lang.ClassNotFoundException : org. apache.camel.impl.BreakpointSupport 引起

java - 当我更改页面方向时出现在页面开头

java - 如何在 Hibernate 中持久化 Map<String, List<Object>>

slick - 如何在 slick 3.0 中将 Rep[T] 转换为 T?

MySql - 当 URL 中提供密码时,MySql 服务器认为没有密码

斯卡拉 : Never ending stream

java - 在应用程序中导入库时如何导入javadoc jar

java - 调用 hashmap.get(object) 时在 HashMap 对象中获取 null 值

java - 将 Hibernate 与 H2 数据库和 joda DateTime 一起使用

java - 在运行时从头开始设置数据库