文章詳情頁(yè)
更新mysql中被別人鎖定的行, 能不能快速失敗直接報(bào)錯(cuò), 而不是一直等待
瀏覽:140日期:2022-06-14 14:42:55
問(wèn)題描述
用戶1
begin;select * from table where id = 1 for update;
用戶2
update table set ... where id = 1;
用戶2就一直在等待, 能不能讓用戶2快速失敗, 直接報(bào)錯(cuò)啊
問(wèn)題解答
回答1:設(shè)置一個(gè)超時(shí)時(shí)間為10s修改my.cnf在[mysqld]下面加入:
innodb_lock_wait_timeout=10
則10s后收到如下錯(cuò)誤:(mysql默認(rèn)50s)
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction回答2:
select for update這種寫(xiě)法會(huì)鎖表。把數(shù)據(jù)庫(kù)等待鎖的時(shí)間調(diào)整一下,可以讓用戶2快速失敗
回答3:用樂(lè)觀鎖??
排行榜

熱門(mén)標(biāo)簽