以下的文章主要介紹的是MySQL JDBC URL中的格式以及其相關參數的詳細解析,你如果對MySQL JDBC URL中的格式以及參數的實際應用感興趣的話,你就可以浏覽以下內容,最近我在實際操作中曾遇到過這樣的疑難問題,如下所示,
會報
- at com.MySQL.jdbc.MySQLIO.readFully(MySQLIO.java:1905)
- at com.MySQL.jdbc.MySQLIO.reuseAndReadPacket(MySQLIO.java:2351)
- at com.MySQL.jdbc.MySQLIO.checkErrorPacket(MySQLIO.java:2862)
- at com.MySQL.jdbc.MySQLIO.sendCommand(MySQLIO.java:1571)
- at com.MySQL.jdbc.MySQLIO.sqlQueryDirect(MySQLIO.java:1666)
- at com.MySQL.jdbc.Connection.execSQL(Connection.java:2988)
- at com.MySQL.jdbc.Connection.execSQL(Connection.java:2917)
- at com.MySQL.jdbc.Statement.executeQuery(Statement.java:824)
- at com.zycy.db.DbTrans.executeQuery(DbTrans.java:127)
這樣的錯誤,重啟Tomcat服務後就好了,但是過一晚上就有出現這樣的問題
MySQL JDBC URL格式如下:
jdbc:MySQL://[host:port],[host:port].../[database][?參數名1][=參數值1][&參數名2][=參數值2]...
常用的幾個較為重要的參數:
參數名稱 參數說明 缺省值 最低版本要求
user 數據庫用戶名用於連接數據庫) 所有版本
password 用戶密碼用於連接數據庫) 所有版本
useUnicode 是否使用Unicode字符集,如果參數characterEncoding設置為gb2312或gbk,本參數值必須設置為true false 1.1g
characterEncoding 當useUnicode設置為true時,指定字符編碼。比如可設置為gb2312或gbk false 1.1g
autoReconnect 當數據庫連接異常中斷時,是否自動重新連接? false 1.1
autoReconnectForPools 是否使用針對數據庫連接池的重連策略 false 3.1.3
failOverReadOnly 自動重連成功後,連接是否設置為只讀? true 3.0.12
maxReconnects autoReconnect設置為true時,重試連接的次數 3 1.1
initialTimeout autoReconnect設置為true時,兩次重連之間的時間間隔,單位:秒 2 1.1
connectTimeout 和數據庫服務器建立socket連接時的超時,單位:毫秒。 0表示永不超時,適用於JDK 1.4及更高版本 0 3.0.1
socketTimeout socket操作讀寫)超時,單位:毫秒。 0表示永不超時 0 3.0.1
對應中文環境,通常MySQL連接URL可以設置為:
- jdbc:MySQL://localhost:3306/test?user=root&password=&useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false
在使用數據庫連接池的情況下,最好設置如下兩個參數:
- autoReconnect=true&failOverReadOnly=false
需要注意的是,在xml配置文件中,url中的&符號需要轉義成&。比如在tomcat的server.xml中配置數據庫連接池時,MySQL jdbc url樣例如下:
- jdbc:MySQL://localhost:3306/test?user=root&password=&useUnicode=true&characterEncoding=utf8&autoReconnect
以上的相關內容就是對MySQL jdbc url的介紹,望你能有所收獲。