广告
返回顶部
首页 > 资讯 > 数据库 >数据库update时出现的问题怎么解决
  • 427
分享到

数据库update时出现的问题怎么解决

2024-04-02 19:04:59 427人浏览 泡泡鱼
摘要

这篇文章主要介绍了数据库update时出现的问题怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇数据库update时出现的问题怎么解决文章都会有所收获,下面我们一起来看看

这篇文章主要介绍了数据库update时出现的问题怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇数据库update时出现的问题怎么解决文章都会有所收获,下面我们一起来看看吧。

数据库update时切忌这样干,这样干是什么?请随我来看看。

早些时候,客户发来这样一段文字“XX的,XXXXXXXX有个10万没到账,帮加上去。”我马上动手查看数据库,寻找原因,随后回复了这样一句话“开玩笑吧”。虽然之前发生过类似这样的问题,但都是小额资金,就手动在数据库里加了,遇到这么大的资金还是头一次,于是我加紧翻看数据库记录的节奏。

我发现用户的入金记录的确已经是审核通过状态,而用户的可用资金却没有加上,这已经让人意外了。

接着我查看代码,并没有发现逻辑上的问题,这又让我感到迷茫。

再翻看日志,发现没有任何异常,好吧,感觉被设了局一样。

回头想想,这种情况并不多见,程序在多数情况下并没有这种情况,一切正常。这糟了,没有错误日志就是***的错误。

静下心来,我想有可能是事务出现的问题,因为对于资金表,同一个用户的资金在同一个时间点是可能同时被更新的,我猜想,是入金记录先插入了出入金记录表,等到更新资金表的时候被住,事务超时后插入的记录没有回滚,于是我通过这样的方式来证明一下。

START TRANSACTioN; INSERT INTO record VALUES(1,123); UPDATE money SET money = money + 10; COMMIT;  START TRANSACTION; UPDATE money SET money = money + 100; COMMIT;

通过手动控制事务锁,发现不是我想的那样。然后我又试了试下面这种方式:

START TRANSACTION; UPDATE money SET money = money + 10; INSERT INTO record VALUES(1,123); COMMIT;  START TRANSACTION; UPDATE money SET money = money + 100; COMMIT;

发现两者的效果是一样的,事务都会回滚。

这个时候,我的思路被禁锢了,我和同事讨论起来,看看他有什么想法,经过一番思想斗争后,果然同事还是给出了他的想法,我深感赞同。

MoneyUser moneyUser = moneyUserMapper.selectByPrimaryKey(members.getUid());    // 冻结资金-出金金额    moneyUser.setFrozenl(moneyUser.getFrozen().subtract(moneyTransfer.getount()));    // 可用资金+出金金额    moneyUser.setTotaaymoney(moneyUser.getTotalpayey().add(moneyTransfer.getount())); this.moneyUserMapper.updateByPrimaryKey(moneyUser);

这样的代码在出现并发的时候,获取moneyUser对象的时候,其中的冻结资金和可用资金加入都是0,那么两个并发在update的时候,两个都执行了,但是起初的冻结资金和可用资金相同,就会导致有一笔资金没有加上。

调试的时候更容易发现这个问题。OH,my 噶,真是个大问题,还出在资金的问题时,我真庆幸这个问题发生的频率不够高。不过我到底是应该庆幸还是不庆幸呢,也许次数发生的多起来的时候,我就更容易来反思来找出问题的症结所在。

那么问题怎么解决呢?

UPDATE moneser   SET   frozapital = frozpital - #{amount,jdbcType=DECIMAL},   totaloney = totaloney + #{amount,jdbcType=DECIMAL}   WHERE uid = #{uid,jdbcType=INTEGER}

通过在sql语句中进行字段的更新操作,而不是在Java类中,因为Mysql本身是会有这方面的处理方式的。

关于“数据库update时出现的问题怎么解决”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“数据库update时出现的问题怎么解决”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: 数据库update时出现的问题怎么解决

本文链接: https://www.lsjlt.com/news/71602.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 数据库update时出现的问题怎么解决
    这篇文章主要介绍了数据库update时出现的问题怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇数据库update时出现的问题怎么解决文章都会有所收获,下面我们一起来看看...
    99+
    2022-10-19
  • springboot数据库查询时出现时区差异问题怎么解决
    今天小编给大家分享一下springboot数据库查询时出现时区差异问题怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。...
    99+
    2023-07-04
  • MySQL数据库执行Update卡死问题怎么解决
    这篇文章主要介绍了MySQL数据库执行Update卡死问题怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MySQL数据库执行Update卡死问题怎么解决文章都会有所收获,下面我们一起来看看吧。...
    99+
    2023-06-30
  • 数据库导入导出时报ORA-01843的问题怎么解决
    这篇文章主要介绍“数据库导入导出时报ORA-01843的问题怎么解决”,在日常操作中,相信很多人在数据库导入导出时报ORA-01843的问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”数据库导入导出...
    99+
    2023-06-03
  • 怎么解决MySQL数据库出现慢查询问题
    这篇文章主要讲解了“怎么解决MySQL数据库出现慢查询问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么解决MySQL数据库出现慢查询问题”吧!1、My...
    99+
    2022-10-18
  • 解决Oracle数据库出现问题时的脚本有哪些
    本篇内容主要讲解“解决Oracle数据库出现问题时的脚本有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“解决Oracle数据库出现问题时的脚本有哪些”吧!&...
    99+
    2022-10-18
  • 如何解决springboot数据库查询时出现的时区差异问题
    目录springboot数据库查询时出现的时区差异1.在连接数据库的配置上我们添加一项2.直接在boot配置文件中增加jackson配置springboot new Date()时区...
    99+
    2023-01-06
    springboot数据库查询 数据库查询时区差异 springboot查询
  • 使用wordpress的$wpdb类读mysql数据库做ajax时出现的问题怎么解决
    这篇文章主要介绍“使用wordpress的$wpdb类读mysql数据库做ajax时出现的问题怎么解决”,在日常操作中,相信很多人在使用wordpress的$wpdb类读mysql数据库做ajax时出现的问...
    99+
    2022-10-19
  • 怎么解决使用数据库出现的ORA-00001、ORA-00604问题
    本篇内容介绍了“怎么解决使用数据库出现的ORA-00001、ORA-00604问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔...
    99+
    2022-10-18
  • MySQL数据库执行Update卡死问题的解决方法
    目录问题分析解决办法过程复现和解决扩展总结执行数据库更新update操作的时候数据库卡死了 问题分析 一般都是数据库事务未提交,导致update或者delete卡死。 解决...
    99+
    2022-11-13
  • 怎么解决mysql5数据库连接超时问题
    本篇内容主要讲解“怎么解决mysql5数据库连接超时问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么解决mysql5数据库连接超时问题”吧! ...
    99+
    2022-10-18
  • 如何解决idea中连接数据库时出现SSL错误的问题
    这篇文章将为大家详细讲解有关如何解决idea中连接数据库时出现SSL错误的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在配置环境的xml中更改url更改前更改后关于...
    99+
    2022-10-18
  • Mybatisplus出现数据库id很大或为负数问题怎么解决
    本文小编为大家详细介绍“Mybatisplus出现数据库id很大或为负数问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“Mybatisplus出现数据库id很大或为负数问题怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢...
    99+
    2023-07-05
  • 怎么解决go get时出现xxx is deprecated的问题
    本篇内容主要讲解“怎么解决go get时出现xxx is deprecated的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么解决go get时出现xxx is deprecated的问...
    99+
    2023-06-22
  • 怎么解决数据库alert日志中出现的ERROR: failed to establish问题
    这篇文章主要讲解了“怎么解决数据库alert日志中出现的ERROR: failed to establish问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习...
    99+
    2022-10-18
  • 解决Mybatis的serverTimezone时区出现问题
    目录Mybatis serverTimezone时区出现问题错误信息出现原因解决Mybatis 插件碰到的时区问题及用法Mybatis serverTimezone时区出现问题 错误...
    99+
    2022-11-12
  • SQL数据库连接超时时间已到的问题怎么解决
    这篇文章主要介绍“SQL数据库连接超时时间已到的问题怎么解决”,在日常操作中,相信很多人在SQL数据库连接超时时间已到的问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SQL数据库连接超时时间已到的...
    99+
    2023-07-06
  • 连接服务器时出现问题怎么解决
    连接服务器时出现问题解决的方法:1、检查本地网络是否不通;2、检查登录账号或密码是否输入错误,如果忘记密码通过找回密码或找供应商帮忙...
    99+
    2023-02-08
    连接服务器 服务器
  • 怎么解决数据库ORA-00837问题
    本篇内容介绍了“怎么解决数据库ORA-00837问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 解决...
    99+
    2022-10-19
  • 怎么解决数据库变慢问题
    这篇文章主要介绍“怎么解决数据库变慢问题”,在日常操作中,相信很多人在怎么解决数据库变慢问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么解决数据库变慢问题”的疑惑有所帮...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作