我正在运行以下MySQL UPDATE语句:

mysql> update customer set account_import_id = 1;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

我没有使用事务,为什么会出现这个错误?我甚至try 重新启动我的MySQL服务器,但都没有用.

该表有406733行.

推荐答案

您正在使用一个事务;autocommit不会禁用事务,它只是让它们在语句末尾自动提交.

发生的情况是,另一个线程在某条记录上持有记录锁(您正在更新表中的每条记录!)时间太长,线程超时.

您可以通过发布

SHOW ENGINE INNODB STATUS

事件发生后(在SQL编辑器中).理想情况下,在安静的测试机器上进行此操作.

Mysql相关问答推荐

MySQL在使用SELECT*时不使用索引

插入时发生日期时间字段溢出错误

计算符合字段值只能包含一种事件类型这一事实的记录

使用Check查看过go 两个月是否完成了IRM Meetup

表列中的SQL SUM MENY值记录单个查询

在MySQL的join查询中进行计算

发生的原因及解决方法

Select 不同的列,其中另一列不包含特定值

将 AVG 与 HAVING 结合使用

如何在 mysql 中获取 Day Wise 的平均值?

检索按键列值分组的最新日期 (MySql)

获取 MySQL 中每一行之间负差的总和

为什么 fetch 方法不能获取任何东西?(feat node.js,restAPI)

处理 Visits 表中数百万行的最佳方法是什么?

我在查询中没有得到正确的结果

在 MySQL 中使用三个表进行计算

如何将表的链接列转换为 SQL 中的行?

如何使用nodejs从mysql数据库中获取最新的10条记录?

如何在mysql中连接整数(整数和整数)和varchar(nvarchar和varchar)等数据类型?

当运行 UPDATE ... datetime = NOW();所有更新的行都会有相同的日期/时间吗?