[英]can't connect to mysql in playframework
我正在嘗試在Playframework 2.4中連接到MySQL(我創建了項目play java)。
我通過brew在Mac中安裝了mysql 5.7,並創建了用戶和數據庫。
並且我在播放中向application.conf和build.sbt添加了一些配置。
這是application.conf
db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://localhost/testplay"
db.default.user="test"
db.default.password= "test"
這是buid.sbt。
libraryDependencies ++= Seq(
javaJdbc,
cache,
javaWs,
"mysql" % "mysql-connector-java" % "5.1.35"
)
我已經在項目文件夾中完成了“ sbt”和“ activator run”。
但是,當我連接到http:// localhost:9000 /時 ,它返回“配置錯誤無法連接到數據庫[db]”。
應用程序日志摘要為
play.api.Configuration$$anon$1: Configuration error[Cannot connect to database [db]]
Caused by: play.api.Configuration$$anon$1: Configuration error[dataSource or dataSourceClassName or jdbcUrl is required.]
at play.api.Configuration$.configError(Configuration.scala:154)
at play.api.PlayConfig.reportError(Configuration.scala:996)
at play.api.db.HikariCPConnectionPool.create(HikariCPModule.scala:70)
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)
at play.api.db.DefaultDatabase.getConnection(Databases.scala:138)
at play.api.db.DefaultDBApi$$anonfun$connect$1.apply(DefaultDBApi.scala:44)
... 66 common frames omitted
Caused by: java.lang.IllegalArgumentException: dataSource or dataSourceClassName or jdbcUrl is required.
at com.zaxxer.hikari.HikariConfig.validate(HikariConfig.java:784)
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
你能告訴我如何解決這個問題嗎?
在Play 2.4和更高版本中指定用戶名的正確鍵是username
而不是user
。 您可以在JDBC設置-參考部分中獲得更多信息。
db.default.username="test"
在2.3及更早的版本中,您使用的密鑰( user
)是正確的密鑰。
從stacktrace看來,配置參數似乎不再只是url
而是`jdbcUrl。 嘗試這個:
...
db.default.jdbcUrl="jdbc:mysql://localhost/testplay"
// you may also need to change user to username
db.default.username=test
...
我認為,正確連接到mySql的URL應該包含用戶名和密碼,盡管它們是分別定義的-至少這就是我正在做的事情。 您的情況是這樣的:
db.default.driver=com.mysql.jdbc.Driver
db.default.user="test"
db.default.password= "test"
db.default.url="mysql://test:test@localhost/testplay"
我更喜歡使用參數化網址:
db.default.driver=com.mysql.jdbc.Driver
db.default.user="test"
db.default.password= "test"
db.host="localhost"
db.schema="testplay"
db.default.url="mysql://"${db.default.username}":"${db.default.password}"@"${dbhost}"/"${dbschema}
對於您來說,第一個URL可能看起來更復雜,但這可以防止錯誤並提供更好的靈活性。 這樣,您可以輕松替換屬性值,而不會錯誤地破壞url格式。
您可能還應該注意設置db.default.jndiName屬性-我不知道,id與jdbc有關。 我正在使用JPA /休眠,這是必需的-我使用persistence.xml中定義的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.