mysql JDBC URL参数解析

本文介绍了MySQL JDBC URL的格式及其常用连接属性,如`characterEncoding`用于解决编码不一致问题,`autoReconnectForPools`和`autoReconnect`支持断线重连,`connectTimeout`设置连接超时,以及`socketTimeout`设定socket操作超时。同时提到了`useCursorFetch`对PreparedStatement的影响。详细参数表和官方手册链接供参考。
摘要由CSDN通过智能技术生成

mysql JDBC URL格式如下:


jdbc:mysql://[host:port],[host:port].../[database][?参数名1][=参数值1][&参数名2][=参数值2]...

 

常用URL连接属性

 

characterEncoding 在插入数据时,如果数据的编码类型与数据库的编码类型不一致时,如程序中使用GBK,而数据库的数据类型为utf8,会出现插入数据的字节的类型无法识别的问题。为了解决此问题,我们需要在URL上设置characterEncoding=utf8。

 

autoReconnectForPools和 autoReconnect:是否允许连接断开后自动重连。 我们知道,MySQL的长连接在长时间的连接后,会出现断连的状况。为了解决这种问题,我们一般会设置此参数,在连接断开后,将连接重新连接起来。在使用数据连接池的情况,如使用DBCP或者JBoss连接池,请尽量使用 autoReconnectForPools。


connectTimeout 和数据库服务器建立socket连接时的超时,单位:毫秒。 0表示永不超时,适用于JDK 1.4及更高版本


socketTimeout socket操作(读写)超时,单位:毫秒。 0表示永不超时

 

useCursorFetch:如果是从java中连mysql,使用PrepareStatement的话,默认情况下真正发给服务器端之前已经把?替换了。也就是跟普通的Statement一样。在5.0开始虽然有了真正的PrepareStatement,但是开启的方式令人匪夷所思:网上虽然有资料说设置useServerPreparedStmts=true 可以开启,但事实上这是无效的。
真正的开启方式是useCursorFetch=true

 

附录:URL连接参数 | URL连接属性表

属性名

定义

要求?

默认值

版本

Connection/Authentication(连接/鉴定)

user

连接的用户

No

 

全部

password

连接时使用的密码。

No

 

全部

socketFactory

驱动程序用于创建与服务器套接字连接的类的名称。该类必须实现了接口“com.mysql.jdbc.SocketFactory”,并有公共无参量构造函数。

No

com.mysql.jdbc.StandardSocketFactory

3.0.3

connectTimeout

套接字连接的超时(单位为毫秒),0表示无超时。仅对JDK-1.4或更新版本有效。默认值为“0”。

No

0

3.0.1

socketTimeout

网络套接字连接的超时(默认值0表示无超时)。

No

0

3.0.1

useConfigs

在解析URL属性或应用用户指定的属性之前,加载由逗号“,”分隔的配置属性列表。在文档的“配置”部分中解释了这些配置。

No

 

3.1.5

interactiveClient

设置CLIENT_INTERACTIVE标志,根据INTERACTIVE_TIMEOUT而不是WAIT_TIMEOUT向MySQL通报超时连接。

No

false

3.1.0

propertiesTransform

com.mysql.jdbc.ConnectionPropertiesTransform的1个实施实例,在尝试连接之前,驱动程序将使用它来更改传递给驱动的URL属性。

No

 

3.1.4

useCompression

与服务器进行通信时采用zlib压缩(真/假)? 默认值为“假”。

No

false

3.0.17

High Availability and Clustering (高可用性和簇集)

autoReconnect

驱 动程序是否应尝试再次建立失效的和/或死连接? 如果允许,对于在失效或死连接上发出的查询(属于当前事务),驱动程序将抛出异常,但在新事务的连接上发出下一个查询时,将尝试再连接。不推荐使用该特 性,这是因为,当应用程序不能恰当处理SQLExceptions时,它会造成与会话状态和数据一致性有关的副作用,设计它的目的仅用于下述情况,即,当 你无法配置应用程序来恰当处理因死连接和/或无效连接导致的SQLExceptions时。作为可选方式,可将MySQL服务器变量 “wait_timeout”设置为较高的值,而不是默认的8小时。

No

false

1.1

autoReconnectForPools

使用适合于连接池的再连接策略(默认值为“假”)。

No

false

3.1.3

failOverReadOnly

在autoReconnect模式下出现故障切换时,是否应将连接设置为“只读”?

No

true

3.0.12

reconnectAtTxEnd

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值