DELETE FROM 表 WHERE 条件 ORDER BY 字段 LIMIT 1000
删除表中符合条件的1000行
1205 - Lock wait timeout exceeded; try restarting transaction
刚刚编写了一个存储过程,使用了事务但是没有提交事务,
删除过程中 DELETE FROM 表 ,一直无法删除很慢,最终报以上错误。
但是DELETE FROM 表 WHERE 条件 LIMIT 10,后面的删除前10条却可以执行
但是删除99999条,也是报以上的错误。应该是删到了没有提交事务的那一部分。
提交事务后删除成功。
CREATE DEFINER = `root` @`%` PROCEDURE `crtes` ( ) BEGIN
DECLARE
i INT DEFAULT 1;
START TRANSACTION;-- 开启事务
WHILE
i < 10000 DO
INSERT INTO test.t1 ( t1.id, t1.NAME )
VALUES
( 1, RAND( ) );
SET i = i + 1;
END WHILE;
COMMIT; -- 提交
END