Error updating database. Cause: java.sql.SQLException:Lock wait timeout exceeded;try restarting t(☆)

1.问题描述
Error updating database. Cause: java.sql.SQLException: Lock wait timeout exceeded; try restarting t
2、原因
mysql的其他事物没有提交,但是锁等待超时
3、解决办法

SELECT * FROM information_schema.INNODB_TRX

如下图所示,箭头指向的地方就说我们要找的堵塞的线程id,我的图中没有了,是因为我已经杀死了,你那里应该是有的。
在这里插入图片描述
查询出来之后,通过下面的sql来杀死堵塞的线程

kill trx_mysql_thread_id 
#比如查查询出来的堵塞的线程id是397693976439681,就执行下面的sql
kill 39769;
kill 39764;
kill 39681;

我的微信号: xiang20200106 ,欢迎大家找我聊天

— 【 THE END 】—

在这里插入图片描述

本公众号已经整理一套包含前端和后端的全套电子书教程,限时免费赠送,请在公众号里回复「电子书」获取!
解决数据库更新报错 `### Error updating database. Cause: java.sql.SQLException: SQL String cannot be empty` 有以下方法: - 代码层面进行列表判空处理:当批量更新时,若涉及列表参数,可在代码层面对列表进行判空。例如使用 `CollectionUtils` 的 `isEmpty` 方法检查列表是否为空,避免传入空列表导致 MyBatis 无法生成动态 SQL 语句 [^1]。示例代码如下: ```java import org.springframework.util.CollectionUtils; import java.util.List; public class SomeService { public void updateBatch(List<SomeEntity> entityList) { if (!CollectionUtils.isEmpty(entityList)) { // 调用 MyBatis 的批量更新方法 } } } ``` - MyBatis 层面使用 `if` 标签判空:在 MyBatis 的 XML 文件中,使用 `if` 标签对列表参数进行判空处理。若列表为空,不执行相应的 SQL 逻辑,防止生成空的 SQL 语句 [^1]。示例代码如下: ```xml <update id="updateBatch" parameterType="java.util.List"> <if test="list != null and list.size() > 0"> <!-- 具体的 SQL 更新语句 --> </if> </update> ``` - 检查 `mapper.xml` 文件判断条件:查看 `mapper.xml` 文件,确保判断条件正确,避免因判断条件错误导致 SQL 语句无法生成。例如,检查 `<if>` 标签中的条件是否符合预期,避免出现判断写错的情况 [^3]。示例代码如下: ```xml <insert id="insertBatch" parameterType="java.util.List"> <if test="dbType == 'mysql' or dbType == 'db2'"> <!-- 正确的 SQL 插入语句 --> </if> <if test="dbType == 'oracle'"> <!-- 正确的 SQL 插入语句 --> </if> </insert> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

playboy-jordan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值