2018-05-02 22:13:47.19 | create connection SQLException,
url: jdbc:mysql://XXXXXXXXX?serverTimezone=Hongkong&useUnicode=true&characterEncoding=utf8&useSSL=false&autoReconnect=true&useServerPrepStmts=true, errorCode 0, state 08001
java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:108)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:95)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:87)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:61)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:71)
at com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:932)
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:857)
at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:444)
at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:230)
at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:226)
at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:149)
at com.alibaba.druid.filter.stat.StatFilter.connection_connect(StatFilter.java:218)
at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:143)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1515)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1578)
at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2466)
Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:59)
at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:103)
at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:149)
at com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:165)
at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:92)
at com.mysql.cj.NativeSession.connect(NativeSession.java:152)
at com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:876)
... 10 more
Caused by: java.net.SocketException: No buffer space available (maximum connections reached?): connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at com.mysql.cj.protocol.StandardSocketFactory.connect(StandardSocketFactory.java:173)
at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:66)
... 12 more
大家幫忙看下,專案放在服務器上,啟動tomcat后啟不起來,謝謝大家!
uj5u.com熱心網友回復:
檢查你的連接地址,登陸賬戶,密碼,以及賬戶權限
uj5u.com熱心網友回復:
有幾種可能導致1、mysql是否所分配的帳號允許遠程連接
2、埠是否正確,默認埠3306
3、防火墻
可以用telnet先測驗下資料庫埠服務是否正常
uj5u.com熱心網友回復:
使用本地資料庫客戶端連接試一下,看是否能登陸,順便,兩個樓上說得對uj5u.com熱心網友回復:
【【【問題補充】】】】資料庫連接:driverClassName=com.mysql.cj.jdbc.Driver
mysql版本:5.7
jdk:1.8
問題描述:隔一段時間就會報例外如下例外,但系統能使用;tomcat停了發布系統后就起動不了了
uj5u.com熱心網友回復:
【【【問題補充2】】】】重啟服務器,啟動tomcat后,專案又可以正常使用了
uj5u.com熱心網友回復:
本地登錄完全正常,沒有什么問題,就是在服務器上運行一段時間后,就會有這樣的問題,考慮可能跟服務器的配置有關系uj5u.com熱心網友回復:
例外后,檢查下mysql的連接數,是不是你連接沒釋放導致。uj5u.com熱心網友回復:
連接是用阿里巴巴的連接池uj5u.com熱心網友回復:
沒用過阿里巴巴資料庫組件,但資料庫訪問從原理上而言,都應該開啟連接,關閉連接。如下:
Connection conn = dataSource.getConnection();
//資料庫操作
conn.close();
uj5u.com熱心網友回復:
他的關閉連接其實是歸還連接到druid連接池中uj5u.com熱心網友回復:
說一個比較坑的點:就是讓你的資料庫連接驅動版本和你的資料庫版本保持一致,我曾經因為這個原因debug了一晚上。最騷的是,不一致的時候,我的測驗用例是可以正常測驗的,然后到tomcat啟動就不行。。。。報各種不知名錯誤uj5u.com熱心網友回復:
這個跟你描述的場景很相似https://blog.csdn.net/yzy199391/article/details/78911329
如果這個不是,那得一步一步排查了,個人覺得跟服務器相關性比較大
連接池設定大點(估計沒啥用,該用完還是用完),druid自帶監控,自己百度加進去,檢查連接池是否泄漏,然后再資料庫連接是否夠用
你這tomcat重啟之后起不來,首先你得判斷tomcat的行程是否真的關閉了,然后再查下是否真的存在連接
uj5u.com熱心網友回復:
Caused by: java.net.SocketException: No buffer space available (maximum connections reached?): connect沒有可用的緩沖區空間(達到最大連接數?)
uj5u.com熱心網友回復:
今天遇見這個同樣的問題,連接的時候報錯,`com.alibaba.druid.pool.DruidDataSource,init datasource error, errorCode 0, state 08001`進過一番查詢,最后發現是資料庫連接驅動版本的問題,根據[DRDS官方檔案說明](https://help.aliyun.com/document_detail/117762.html),DRDS實體mysql版本為5.X,因此如果使用了高版本的mysql驅動,是無法進行連接的。

最后的修改方案:
```xml
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.45</version>
</dependency>
```
uj5u.com熱心網友回復:
解決了嗎,我也遇到了
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/254184.html
標籤:Web 開發
