2017-03-16 31 views
0

我正在使用PlayFramework(2.3.x)應用程序。我想連接到一個MySQL數據庫。下面是我在application.conf給了配置:連接到帶有播放框架的mysql db的異常

db.default.driver="com.mysql.jdbc.Driver" 
db.default.url="jdbc:mysql://localhost/mydb" 
db.default.jndiName=DefaultDS 
db.default.username=root 
db.default.password=root 
db.default.logStatements=true 
jpa.default=defaultPersistenceUnitName 

當我跑我得到以下異常

Oops, cannot start the server. 
Configuration error: Configuration error[Cannot connect to database [default]] 
    at play.api.Configuration$.play$api$Configuration$$configError(Configuration.scala:94) 
    at play.api.Configuration.reportError(Configuration.scala:743) 
    at play.api.db.BoneCPPlugin$$anonfun$onStart$1.apply(DB.scala:247) 
    at play.api.db.BoneCPPlugin$$anonfun$onStart$1.apply(DB.scala:238) 
    at scala.collection.immutable.List.map(List.scala:273) 
    at play.api.db.BoneCPPlugin.onStart(DB.scala:238) 
    at play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:91) 
    at play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:91) 
    at scala.collection.immutable.List.foreach(List.scala:381) 
    at play.api.Play$$anonfun$start$1.apply$mcV$sp(Play.scala:91) 
    at play.api.Play$$anonfun$start$1.apply(Play.scala:91) 
    at play.api.Play$$anonfun$start$1.apply(Play.scala:91) 
    at play.utils.Threads$.withContextClassLoader(Threads.scala:21) 
    at play.api.Play$.start(Play.scala:90) 
    at play.core.StaticApplication.<init>(ApplicationProvider.scala:55) 
    at play.core.server.NettyServer$.createServer(NettyServer.scala:253) 
    at play.core.server.NettyServer$$anonfun$main$3.apply(NettyServer.scala:289) 
    at play.core.server.NettyServer$$anonfun$main$3.apply(NettyServer.scala:284) 
    at scala.Option.map(Option.scala:146) 
    at play.core.server.NettyServer$.main(NettyServer.scala:284) 
    at play.core.server.NettyServer.main(NettyServer.scala) 
Caused by: java.sql.SQLException: Access denied for user ''@'localhost' (using password: YES) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:998) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3847) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3783) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:871) 
    at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1665) 
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1207) 
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2249) 
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2280) 
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2079) 
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:794) 
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422) 
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:400) 
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399) 
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325) 
    at java.sql.DriverManager.getConnection(DriverManager.java:664) 
    at java.sql.DriverManager.getConnection(DriverManager.java:247) 
    at com.jolbox.bonecp.BoneCP.obtainRawInternalConnection(BoneCP.java:363) 
    at com.jolbox.bonecp.BoneCP.<init>(BoneCP.java:416) 
    at com.jolbox.bonecp.BoneCPDataSource.getConnection(BoneCPDataSource.java:120) 
    at play.api.db.BoneCPPlugin$$anonfun$onStart$1.apply(DB.scala:240) 
    ... 18 more 
  1. 我有我的數據庫中創建,我能夠使用該應用程序與MySQL控制檯。

  2. 我把我的persistence.xml放置在我的conf/META-INF中。以下是persistence.xml

  3. 我擁有擁有所有權限的root用戶。

任何人都可以幫助我嗎?

回答

0

你是不是通過登錄,由線

Caused by: java.sql.SQLException: Access denied for user ''@'localhost' (using password: YES)

+0

db.default.username =根 db.default.password =根數據庫憑據存在於配置。 – user3253099

1

根據the docs for Play 2.3.x指示,正確的配置是db.default.user而不是db.default.username。這可能是例外的原因。因此,改變你的配置是:

db.default.driver="com.mysql.jdbc.Driver" 
db.default.url="jdbc:mysql://localhost/mydb" 
db.default.jndiName=DefaultDS 
db.default.user=root 
db.default.password=root 
db.default.logStatements=true 
jpa.default=defaultPersistenceUnitName 
+0

是。我注意到並糾正了它。它的工作正常。謝謝。 – user3253099