Mysql中更新同一张表的两个字段,发生并发

innodb_lock_wait_timeout指的是事务等待获取资源等待的最长时间,超过这个时间还未分配到资源则会返回应用失败;

当锁等待超过设置时间的时候,就会报如下的错误;ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction。

其参数的时间单位是秒,最小可设置为1s(一般不会设置得这么小),最大可设置1073741824秒,默认安装时这个值是50s(默认参数设置)。

给出的解决方案:

1)加长事务等待获取资源等待的时长,set innodb_lock_wait_timeout=1000;

2)长事物等待时长可能治标不治本,最稳妥的方案是修改表设计,并发字段不要设计在同一张表上

posted @ 2021-02-09 10:08  南风向北  阅读(504)  评论(0编辑  收藏  举报