解析bitronix 連接 MySQL 出現MySQLSyntaxErrorException錯誤的解決方法

這篇文章主要介紹了bitronix 連接 mysql 出現mysqlsyntaxerrorexception 的解決方法的相關資料,需要的朋友可以參考下

bitronix 連接 MySQL 出現MySQLSyntaxErrorException 的解決方法

1. 開發環境

hibernate 版本:5.1.0.Final
Bitronix btm 版本:2.1.3

2 異常堆棧信息

Caused?by:?com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:?Access?denied?for?user?''@'localhost'?to?database?'hibernate'  ??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:423)  ??at?com.mysql.jdbc.Util.handleNewInstance(Util.java:377)  ??at?com.mysql.jdbc.Util.getInstance(Util.java:360)  ??at?com.mysql.jdbc.SQLError.createSQLException(SQLError.java:978)  ??at?com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3887)  ??at?com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3823)  ??at?com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:870)  ??at?com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1659)  ??at?com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1206)  ??at?com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2234)  ??at?com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2265)  ??at?com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2064)  ??at?com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:790)  ??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:423)  ??at?com.mysql.jdbc.Util.handleNewInstance(Util.java:377)  ??at?com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:395)  ??at?com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325)  ??at?bitronix.tm.resource.jdbc.lrc.LrcXADataSource.getXAConnection(LrcXADataSource.java:104)  ??...?33?more</init></init>

3 分析問題

很明顯是因為沒有訪問 MySQL 數據庫的權限,導致訪問被拒絕。

打開代碼一看,果然是這樣,代碼里沒有提供訪問數據庫的賬號和密碼嘛

ds.setClassName("bitronix.tm.resource.jdbc.lrc.LrcXADataSource");  ??????????ds.getDriverProperties().put(  ??????????????"url",  ??????????????connectionURL?!=?null???connectionURL  ??????????????????:?"jdbc:mysql://localhost:3306/hibernate?useUnicode=true&amp;characterEncoding=UTF-8&amp;zeroDateTimeBehavior=convertToNull"  ??????????);  ??????????Properties?dp=ds.getDriverProperties();  ??????????dp.put("driverClassName",?"com.mysql.jdbc.Driver");  ??????????ds.setDriverProperties(dp);

4 解決問題

趕緊加上,問題解決 O(∩_∩)O~

...  dp.put("user","root");  dp.put("password","");  ...  ds.setDriverProperties(dp);

? 版權聲明
THE END
喜歡就支持一下吧
點贊11 分享