【背景】
Java服务以mysql.8.0.13.jar 做为驱动进行业务 SQL 执行
【现象】
变更大表添加索引 Java 程序会不固定时间长短(30-60 分钟)抛出 statement cancelled due to client request。
但是查询发现 SQL 其实还在运行,并且最终执行索引添加成功.
【其余信息】
连接URL参数除了用户密码等必要参数外没有设置额外的操作,且通过执行命令 SHOW VARIABLES LIKE ‘max_execution_time’; 查看结果是0。
【TiDB 版本】
配置信息
【预期】
- 为什么会超时?
- 如何通过jdbc 限定任意一条语句的超时时间(DML/DDL/DQL)
tidb6.5还没支持mysql8吧,用5.7的驱动合适点
换成mysql/j 5.1 试下
https://docs.pingcap.com/zh/tidb/stable/dev-guide-choose-driver-or-orm
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
有猫万事足
4
除了上面提到的驱动版本问题,也要查查是不是nginx/haproxy这类负载均衡设置过连接超时时间。
DBAER
(66666)
14
可能是驱动不兼容或者Java框架 修改jdbc 参数 。可以先试一下降级,不行的话,考虑先对比 mysql 使用驱动是否正常。