小心MySQL这个配置可能会让你事务部分提交!!
1、官方定义
innodb_rollback_on_timeout
InnoDB rolls back only the last statement on a transaction timeout by default. If --innodb-rollback-on-timeout is specified, a transaction timeout causes InnoDB to abort and roll back the entire transaction.
官方解释当出现事务等待超时 参数innodb_rollback_on_timeout=off的时候,只会回滚最后一条语句,只有当innodb_rollback_on_timeout=on时才会回滚整个事务。
接下来我们来做实验印证这个问题
2、验证
查看参数innodb_rollback_on_timeout = off
先将innodb_lock_wait_timeout 设小点,避免长时间的等待
set innodb_lock_wait_timeout = 10;