文章详情页
更新mysql中被别人锁定的行, 能不能快速失败直接报错, 而不是一直等待
浏览:91日期:2022-06-14 14:42:55
问题描述
用户1
begin;select * from table where id = 1 for update;
用户2
update table set ... where id = 1;
用户2就一直在等待, 能不能让用户2快速失败, 直接报错啊
问题解答
回答1:设置一个超时时间为10s修改my.cnf在[mysqld]下面加入:
innodb_lock_wait_timeout=10
则10s后收到如下错误:(mysql默认50s)
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction回答2:
select for update这种写法会锁表。把数据库等待锁的时间调整一下,可以让用户2快速失败
回答3:用乐观锁??
排行榜
