mysql连接配置url_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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值