怎么解决mysql 事务出现死锁的问题

怎么解决mysql 事务出现死锁的问题,第1张

这个问题,问的就有问题,你对同一条记录,同时想将use设置成1或2,业务逻辑就有问题啊。我原来处理过类似的问题,介绍一下我的处理方式,在use表中,增加一个字段b,默认值是0,在事物一开始的时候,先将你要处理的那条记录的b值,设置成1,再事物全都处理完毕后,在将1更新成0。如果事物一开始发现这条记录的b值是1,则直接提示用户,正在对同一条数据进行处理,请稍后在试,代码里直接就return了,不往下进行。

说白了,就是用一个字段,把一条记录锁住,事物一开始先判断锁没锁,如果锁了就提示用户,如果没锁,就锁住,然后向下进行,但是,无论是正常处理完,还是回滚,或者是抛出异常,都不要忘了把锁解开。

时会遇到下列错误,需要安装termcap类库。

checking for iconv declaration... install-shextern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft)

checking for library containing waddstr... no

configure: WARNING: no enhanced curses library founddisabling TUI

checking for library containing tgetent... no

configure: error: no termcap library found

make[1]: *** [configure-gdb] Error 1

make[1]: Leaving di

1、在mysql数据库中如何锁定一行数据,保证不被其他的 *** 作影响。

2、从对数据的 *** 作类型分为读锁和写锁。从对数据 *** 作的粒度来分:表锁和行锁。

3、现在我们建立一个表来演示数据库的行锁讲解。

4、行锁基本演示如下图所示。

5、如果两个会话 *** 作的是不同的行,就不会互相阻塞了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7475719.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-06
下一篇 2023-04-06

发表评论

登录后才能评论

评论列表(0条)

保存