一、背景
随着MySQL版本不断迭代升级,相应得驱动也要跟着升级,这样才能更好运用MySQL的一些特性。
二、驱动更新步骤
1、版本说明
mysql-connector-java 8.0.21
mycat 1.6.75
2、配置说明
mysql-connector-java 版本
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.21</version>
</dependency>
jdbc驱动类:com.mysql.jdbc.Driver 改成
com.mysql.cj.jdbc.Driver
配置url: jdbc:mysql://192.168.11.11:6666/bm?useUnicode=true&characterEncoding=utf8&autoReconnect=true
&useSSL=false&serverTimezone=
GMT%2B8
url注意事项
:
serverTimezone要与数据库的时区
对应上
3、调试过程存在的问题:
A、java.sql.SQLNonTransientConnectionException:
Could not create connection to database server. Attempted reconnect 3 times. Giving up
.
java.time.zone.ZoneRulesException: Unknown time-zone ID: CST
解决策略:
1)、找DBA沟通,了解彼此使用的组件版本(mycat、 MySQL)
2)、要加上useSSL 和 serverTimezone 时区 ,如
&useSSL=false&serverTimezone=GMT%2B8
或者
serverTimezone=Asia/Shanghai
注意
:serverTimezone要与数据库的时间对应上
B、执行插入 or 更新 or 查询的时候,有时候后输出这些日志:
(DruidAbstractDataSource.java:1488) –
discard long time none received connection
. , jdbcUrl : jdbc:mysql://XXXXXXX?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false&serverTimezone=CST, jdbcUrl : jdbc:mysql://XXXXXXX?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false&serverTimezone=CST, lastPacketReceivedIdleMillis : 301555
产生原因:
druid 的版本较高
,降低 druid 版本可以解决这个提示。如下:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.22</version>
</dependency>