0

我正在创建一个新的播放框架应用程序并使用 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。我仍然没有看到任何变化。

4

1 回答 1

0

将 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,如果你在 test.conf 中使用 mysql 复制下面的行

    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" 光滑。 dbs.default.db.user = "" slick.dbs.default.db.password = ""

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

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

    libraryDependencies ++= Seq(evolutions)

于 2019-09-10T10:49:10.577 回答