【问题标题】:connect MySQL database with play-framework 2.5使用 play-framework 2.5 连接 MySQL 数据库
【发布时间】:2016-11-05 07:04:25
【问题描述】:

我正在尝试将 MySQL 数据库与 Play-framework-Java 连接 2.5.4

我收到了这个错误

either dataSource or dataSourceClassName is required

这些是我在 App.conf 文件中使用的连接代码,

db {
  db.default.driver=com.mysql.jdbc.Driver
  db.default.url="jdbc:mysql://localhost:3306/playdb"
  db.default.user="root"
  db.default.password="9413678957"
}

但它在连接时给我以下错误:

caused by: java.lang.IllegalArgumentException: either dataSource or dataSourceClassName is required
    at com.zaxxer.hikari.HikariConfig.validate(HikariConfig.java:785)
    at play.api.db.HikariCPConfig.toHikariConfig(HikariCPModule.scala:141)
    at play.api.db.HikariCPConnectionPool$$anonfun$1.apply(HikariCPModule.scala:57)
    at play.api.db.HikariCPConnectionPool$$anonfun$1.apply(HikariCPModule.scala:54)
    at scala.util.Try$.apply(Try.scala:192)
    at play.api.db.HikariCPConnectionPool.create(HikariCPModule.scala:54)
    at play.api.db.PooledDatabase.createDataSource(Databases.scala:199)
    at play.api.db.DefaultDatabase.dataSource$lzycompute(Databases.scala:123)
    at play.api.db.DefaultDatabase.dataSource(Databases.scala:121)
    at play.api.db.DefaultDatabase.getConnection(Databases.scala:142)

当我连接到 mysql 数据库时使用相同(与 App.conf 中相同)

  • url (jdbc:mysql://localhost:3306/playdb)
  • 用户名
  • 密码

使用 Intellij工作正常

请告诉我我做错了什么。

【问题讨论】:

  • 你在其他地方有错误,检查你的数据源配置。像这样:`db.default.datasource="com.mysql.jdbc.jdbc2.optional.MysqlDataSource"`
  • 在哪里写这个,你的意思是在 app.conf 中
  • @BaBL86 谢谢,我应该将它包含在 application.conf 文件中
  • 尝试将db.default.hikaricp.connectionTestQuery="SELECT TRUE" 添加到application.conf

标签: java mysql scala intellij-idea playframework


【解决方案1】:

最后这对我有用:-

这个错误浪费了我很多时间。

这对我有用,

取消注释这些行。

    play.db {
             config = "db"
             default = "default" 
    } 

然后

    db {

  default.driver=com.mysql.jdbc.Driver
  default.url="jdbc:mysql://localhost:3306/playdb"
  default.username=root
  default.password="9403678957"
}

不需要db.default.*,因为您已经在数据库集范围内。

非常感谢answer

【讨论】:

    【解决方案2】:

    您不能在路径中指定 db,您已经在配置的 db 部分中

    所以:
    db.default.driver=com.mysql.jdbc.Driver
    应该只是:
    default.driver=com.mysql.jdbc.Driver

    db {
      default.driver=com.mysql.jdbc.Driver
      default.url="jdbc:mysql://localhost:3306/playdb"
      default.user="root"
      default.password="9413678957"
    }
    

    【讨论】:

      【解决方案3】:

      检查此示例 repo https://github.com/pedrorijo91/play-slick3-steps

      你也可以看到我在http://pedrorijo.com/blog/play-slick/做的教程

      虽然两者都旨在玩 2.4.x,但您应该能够理解您遇到的错误是什么。不过,还有一个 PR 可以升级到玩 2.5.x,https://github.com/pedrorijo91/play-slick3-steps/pull/2

      【讨论】:

      • 通过添加 ## mysql" % "mysql-connector-java" % "5.1.34 到 build.sbt ## ####errors start ### Error injection method, java .lang.NoSuchMethodError: play.api.PlayConfig.getOptional(Ljava/lang/String;Lplay/api/ConfigLoader;)Lscala/Option;在 com.google.inject.util.Providers$GuicifiedProviderWithDependencies.initialize(Providers.java:149) 在 play.db.DBModule.bindings(DBModule.java:40): ####errors end ###
      • 你看过我提到的pr了吗?
      猜你喜欢
      • 1970-01-01
      • 2016-10-14
      • 2016-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      相关资源
      最近更新 更多