更新mysql中被别人锁定的行, 能不能快速失败直接报错, 而不是一直等待

用户1

begin;
select * from table where id = 1 for update;

用户2

update table set ...  where id = 1;

用户2就一直在等待, 能不能让用户2快速失败, 直接报错啊

阅读 2.9k
3 个回答

设置一个超时时间为10s
修改my.cnf
在[mysqld]下面加入:

innodb_lock_wait_timeout=10

则10s后收到如下错误:(mysql默认50s)

ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

select for update这种写法会锁表。
把数据库等待锁的时间调整一下,可以让用户2快速失败

用乐观锁??

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏