我正在运行以下 MySQL UPDATE
语句:
mysql> update customer set account_import_id = 1;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
我没有使用交易,为什么会出现此错误?我什至尝试重新启动我的 MySQL 服务器,但没有帮助。
该表有 406,733 行。
原文由 Jason Swett 发布,翻译遵循 CC BY-SA 4.0 许可协议
您正在使用交易; autocommit 不会禁用事务,它只是让它们在语句结束时自动提交。
可能发生的情况是,某个其他线程在某条记录上持有记录锁(您正在更新表中的每条记录!)太长时间,并且您的线程正在超时。或者可能在单个事务期间在同一行上运行多个 (2+) UPDATE 查询。
您可以通过发出来查看事件的更多详细信息
事件之后(在 SQL 编辑器中)。理想情况下,在安静的测试机器上执行此操作。