這篇文章主要介紹了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&characterEncoding=UTF-8&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