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 |
如 |