【发布时间】:2013-05-23 14:28:36
【问题描述】:
我有一个运行存储过程的 mysql 5.1 db
START TRANSACTION
Insert some rows to table 1
Insert some rows to table 2
COMMIT
调用此存储过程通常会失败
SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded; try restarting transaction
根据this page here,如果mysql服务器不是以innodb_rollback_on_timeout启动的,那么只有最后一条语句被回滚,但START TRANSACTION本身会设置autocommit = 0。这是否意味着我们的 mysql 服务器需要使用这个参数启动,这样它才不会让 db 处于不一致的状态,即某些行插入到表 1 中而不是插入到表 2 中?
【问题讨论】:
标签: mysql database transactions locking timeout