使用url连接mysql时的属性_MySQL数据库连接属性配置,即URL后一些配置参数及其重要性...
在JDBC中,Connection類的創建方式有三種函數(不包括連接池)
一是:DriverManager.getConnection(String url),
二是:DriverManager.getConnection(String url,String user,String password);
三是:DriverManager.getConnection(String url,Properties info);
最簡單的jdbc連接配置如下:
dbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://(host=host_or_ip):(port=port)/db?key1=value1&key2=value2&key3=value3...keyN=valueN
jdbc.username=root
jdbc.password=password
說明:
MySQL 8.0后版本驅動類名稱為:"com.mysql.cj.jdbc.Driver"
如果用于配置JDBC URL的機制是基于XML來配置的,請使用XML字符文字&;分隔配置參數,因為符號(&)是XML的保留字符。
本文特別說明jdbc.url后其一些列配置屬性的及其重要性;以下則為屬性及其描述(Properties and Descriptions),由于官方提供的屬性比較多, 在此我們主要列舉一下常用的即可,具體更多可自己去MySQL官網查看,歡迎大家補充更多常用的配置屬性。
連接/認證(Connection/Authentication.)
Properties
Descriptions
默認值(缺省值)
版本要求
注意事項
user
用于連接數據庫
所有版本
一般不用
password
用于連接數據庫
所有版本
一般不用
connectTimeout
和數據庫服務器建立socket連接時的超時設置,單位:毫秒。 0表示永不超時,適用于JDK 1.4及更高版本
0
3.0.1版本起
socketTimeout
網絡socket操作(讀寫)超時,單位:毫秒。 0表示永不超時 0
0
3.0.1版本起
高可用和集群(High Availability and Clustering.?)
Properties
Descriptions
默認值(缺省值)
版本要求
注意事項
autoReconnect
驅動程序是否應嘗試重新建立過時和/或死掉的連接?如果啟用,驅動程序將對在舊連接或死連接上發出的屬于當前事務的查詢引發異常,但將在新事務中對該連接發出的下一個查詢之前嘗試重新連接。不建議使用此功能,因為當應用程序不能正確處理SQLExceptions時,它會產生與會話狀態和數據一致性相關的副作用,并且僅當您無法將應用程序配置為正確處理因死掉和過時的連接而導致的SQLExceptions時才使用此功能。或者,作為最后一個選項,研究將mysql服務器變量“wait_timeout”設置為高值,而不是默認的8小時。
false
1.1版本起
依具體項目具體對待
autoReconnectForPools
使用適用于連接池的重新連接策略(默認為“false”)
false
3.1.3版本起
依具體項目具體對待
failOverReadOnly
在autoReconnect模式下進行故障轉移時,連接是否應設置為“只讀”?
true
3.0.12版本起
在使用數據庫連接池的情況下,且autoReconnect=true時最好設置該參數:failOverReadOnly=false
maxReconnects
如果autoReconnect為true,則嘗試重新連接的最大次數,默認為“3”。
3
1.1版本起
默認即可
initialTimeout
如果啟用了autoReconnect,則在重新連接嘗試之間等待的初始時間(以秒為單位,默認為“2”)。
2
1.1版本起
安全(Security.?)
Properties
Descriptions
默認值(缺省值)
版本要求
注意事項
useSSL
與服務器通信時使用ssl(true/false),連接到MySQL5.5.45+、5.6.26+或5.7.6+時默認為“true”,否則默認為“false”
false|true(5.5.45+、5.6.26+或5.7.6+)
3.0.2版本起
在5.5.45+、5.6.26+或5.7.6+版本中,如果不使用SSL連接就要在urL中設置useSSL=false;否則會拋異常:Establishing SSL connection without server's identity verification is not recommended.
According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set.
For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'.
You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
雜(Miscellaneous.?)
Properties
Descriptions
默認值(缺省值)
版本要求
注意事項
useUnicode
驅動程序在處理字符串時是否應使用Unicode字符編碼?只應在驅動程序無法確定字符集映射時使用,或者您試圖“強制”驅動程序使用MySQL本身不支持的字符集(例如UTF-8、gb2312或gbk),true / false ,默認為'true'
true
1.1g版本起
必須設置為true,可能會導致中文數據亂碼問題
characterEncoding
如果'useUnicode'設置為true,那么驅動程序在處理字符串時應該使用什么字符編碼?(默認為'自動檢測')
自動檢測
1.1g版本起
當useUnicode設置為true時,指定字符編碼。比如可設置為UTF-8、gb2312或gbk
zeroDateTimeBehavior
當驅動程序遇到完全由零組成的日期時間值時(由MySQL用來表示無效日期),會發生什么?有效值為“exception”、“round”和“converttonull”。
exception
3.1.4版本起
一般設置為“converttonull”比較好,即轉換為null即可,否則會拋異常:Caused by: java.sql.SQLException: Value '0000-00-00' can not be represented as java.sql.Timestamp
serverTimezone
覆蓋時區的檢測/映射。當服務器的時區未映射到Java時區時使用
3.0.2版本起
當數據庫時區未映射到Java時區時可能導致Java代碼中Date類型插入到mysql中datetime類型出現時間不一致的問題。例如:
上海:serverTimezone=Asia/Shanghai
簡寫:serverTimezone=CTT
北京:serverTimezone=UTC+8
或者:serverTimezone=GMT+8
關于時區UTC和GMT
到此結束, 更多常用屬性歡迎大家補充!!!
總結
以上是生活随笔為你收集整理的使用url连接mysql时的属性_MySQL数据库连接属性配置,即URL后一些配置参数及其重要性...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: web和mysql连接并增删改查_Jav
- 下一篇: mysql的基本介绍简书_mysql 简