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及更高版本03.0.1版本起 
socketTimeout网络socket操作(读写)超时,单位:毫秒。 0表示永不超时 003.0.1版本起 

高可用和集群(High Availability and Clustering. 

Properties Descriptions默认值(缺省值)版本要求            注意事项
autoReconnect

驱动程序是否应尝试重新建立过时和/或死掉的连接?如果启用,驱动程序将对在旧连接或死连接上发出的属于当前事务的查询引发异常,但将在新事务中对该连接发出的下一个查询之前尝试重新连接。不建议使用此功能,因为当应用程序不能正确处理SQLExceptions时,它会产生与会话状态和数据一致性相关的副作用,并且仅当您无法将应用程序配置为正确处理因死掉和过时的连接而导致的SQLExceptions时才使用此功能。或者,作为最后一个选项,研究将mysql服务器变量“wait_timeout”设置为高值,而不是默认的8小时。

false1.1版本起依具体项目具体对待
autoReconnectForPools使用适用于连接池的重新连接策略(默认为“false”)false3.1.3版本起依具体项目具体对待
failOverReadOnly在autoReconnect模式下进行故障转移时,连接是否应设置为“只读”?true3.0.12版本起在使用数据库连接池的情况下,且autoReconnect=true时最好设置该参数:failOverReadOnly=false
maxReconnects如果autoReconnect为true,则尝试重新连接的最大次数,默认为“3”。31.1版本起默认即可
initialTimeout如果启用了autoReconnect,则在重新连接尝试之间等待的初始时间(以秒为单位,默认为“2”)。21.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'

true1.1g版本起必须设置为true,可能会导致中文数据乱码问题
characterEncoding如果'useUnicode'设置为true,那么驱动程序在处理字符串时应该使用什么字符编码?(默认为'自动检测')自动检测1.1g版本起当useUnicode设置为true时,指定字符编码。比如可设置为UTF-8、gb2312或gbk 
zeroDateTimeBehavior当驱动程序遇到完全由零组成的日期时间值时(由MySQL用来表示无效日期),会发生什么?有效值为“exception”、“round”和“converttonull”。exception3.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

到此结束, 更多常用属性欢迎大家补充!!!

 

  • 13
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张小洛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值