杀死 InnoDB 进程会导致查询回滚吗?
Does killing an InnoDB process result in ROLLBACK of query?
MySQL 版本 5.5.28
我不小心 运行 一个没有 WHERE 子句的 UPDATE
查询。
然后我使用 kill 202085
在 MySQL 中终止了进程。
这是否导致自动回滚?或者我是否需要担心部分执行的查询?
编辑:根据 SHOW PROCESSLIST
,我的查询是 "SENDING DATA"。
编辑:这是没有 WHERE
子句的查询。
UPDATE products t1,
`raw_table` t2
SET t1.`model` = t2.`model`
, t1.`sku` = CONCAT('ABC-',t2.`model`)
没有任何 WHERE
子句,UPDATE
会做什么是个谜,因为我没有指定任何关系。
添加 WHERE
子句后,我的查询立即执行并按预期更新了大约 250 行。
WHERE t1.`model` = t2.`old_model`
AND t1.`vendor_id` = 53
是的,它回滚了。但这取决于查询的阶段。如果它已提交更改,它不会回滚。如果您设法在操作之前终止查询,那么它将回滚。
MySQL 版本 5.5.28
我不小心 运行 一个没有 WHERE 子句的 UPDATE
查询。
然后我使用 kill 202085
在 MySQL 中终止了进程。
这是否导致自动回滚?或者我是否需要担心部分执行的查询?
编辑:根据 SHOW PROCESSLIST
,我的查询是 "SENDING DATA"。
编辑:这是没有 WHERE
子句的查询。
UPDATE products t1,
`raw_table` t2
SET t1.`model` = t2.`model`
, t1.`sku` = CONCAT('ABC-',t2.`model`)
没有任何 WHERE
子句,UPDATE
会做什么是个谜,因为我没有指定任何关系。
添加 WHERE
子句后,我的查询立即执行并按预期更新了大约 250 行。
WHERE t1.`model` = t2.`old_model`
AND t1.`vendor_id` = 53
是的,它回滚了。但这取决于查询的阶段。如果它已提交更改,它不会回滚。如果您设法在操作之前终止查询,那么它将回滚。