- 数据库连接字符串示例:
jdbc:mysql://localhost:3306/mydb?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Hongkong
- 语句分解分析:
jdbc:mysql://localhost:3306/mydb
- 连接本地 mysql 数据库 mydb
- localhost 是本机的 IP 地址也就是127.0.0.1
- 3306 是对应本地的端口号,一般是 mysql 数据库的连接端口
- mydb就是对应要连接的数据库库名
autoReconnect=true
- 当数据库连接异常中断时,是否自动重新连接
useUnicode=true&characterEncoding=utf8
- 是否使用 Unicode 字符集,如果参数 characterEncoding 设置为 gb2312 或gbk ,本参数值必须设置为 true , 当useUnicode 设置为 true 时,指定字符编码。比如可设置为 gb2312 或gbk
- 解决乱码问题
- 系统编码类型为UTF-8 ,当数据库编码格式为GBA,也不会出现乱码
useSSL=false
- 这个参数可以使 JDBC 兼容更高版本的数据库
serverTimezone=Hongkong
- 数据库时区设置,UTC为世界时间
- 世界时间比北京时间早 8 个钟
- 时区设置为东八区时会出现各种陷阱,可直接修改 mysql 的配置文件
或者设置serverTimezone=Asia/Shanghai
autoReconnectForPools=true
- 是否使用针对数据库连接池的重连策略
failOverReadOnly=true
- 自动重连成功后,连接是否设置为只读?
maxReconnectsautoReconnect=true
- 设置为 true 时,重试连接的次数
initialTimeoutautoReconnect=true
- 设置为 true 时,两次重连之间的时间间隔,单位:秒
connectTimeout=100
- 和数据库服务器建立 socket 连接时的超时,单位:毫秒。 0 表示永不超时,适用于 JDK 1.4 及更高版本
socketTimeoutsocket=1000
- 操作(读写)超时,单位:毫秒。 0 表示永不超时
- 其他
在使用数据库连接池的情况下,最好设置如下两个参数:
autoReconnect=true&failOverReadOnly=false
需要注意的是,在 xml 配置文件中,url 中的 & 符号需要转义成 &。比如在 tomcat 的 server.xml 中配置数据库连接池时,mysql jdbc url 样例如下:
jdbc:mysql://localhost:3306/test?user=root&password=&useUnicode=true&characterEncoding=gbk
&autoReconnect=true&failOverReadOnly=false
参考:
https://www.cnblogs.com/yokoboy/archive/2013/03/01/2939315.html
MySQL 官网文档: http://dev.mysql.com/doc/refman/5.1/en/connector-j-reference-configuration-properties.html
https://www.huaweicloud.com/articles/e70b4852d363bdad2cce3be977590d38.html