您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

MySQL忽然出现某些记录无法更新

2024/3/12 10:26:35发布21次查看
mysql突然出现某些记录无法更新 ? 一直运行良好的系统这两天出现奇怪的问题:某些记录无法更新成功。具体错误如下: ?caused by: org.hibernate.stalestateexception: batch update returned unexpected row count from update [0]; actual row count: 0; e
mysql突然出现某些记录无法更新
? 一直运行良好的系统这两天出现奇怪的问题:某些记录无法更新成功。具体错误如下:
?caused by: org.hibernate.stalestateexception: batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
? at org.hibernate.jdbc.expectations$basicexpectation.checkbatched(expectations.java:85)
? at org.hibernate.jdbc.expectations$basicexpectation.verifyoutcome(expectations.java:70)
? at org.hibernate.jdbc.batchingbatcher.checkrowcounts(batchingbatcher.java:90)
? at org.hibernate.jdbc.batchingbatcher.doexecutebatch(batchingbatcher.java:70)
? at org.hibernate.jdbc.abstractbatcher.executebatch(abstractbatcher.java:268)
? at org.hibernate.engine.actionqueue.executeactions(actionqueue.java:268)
? at org.hibernate.engine.actionqueue.executeactions(actionqueue.java:185)
? at org.hibernate.event.def.abstractflushingeventlistener.performexecutions(abstractflushingeventlistener.java:321)
? at org.hibernate.event.def.defaultflusheventlistener.onflush(defaultflusheventlistener.java:51)
? at org.hibernate.impl.sessionimpl.flush(sessionimpl.java:1216)
? at org.hibernate.impl.sessionimpl.managedflush(sessionimpl.java:383)
? at org.hibernate.transaction.jdbctransaction.commit(jdbctransaction.java:133)
考虑到这两天系统只是前端有少许改动,于是让前端开发人员去定位,前端定位半天后说相关地方没改动,要求后台开发人员查,后台开发人员很抗拒,因为最近后台并没更新,这问题是这两天才出现的,后台不情愿地追踪了半天蒙了,发现同样的代码流程,某些记录能够更新成功,某些则失败。后台直接跟我说搞不定了,太诡异了。无奈之下只好自己去查。
?
? 网上搜到的关于caused by: org.hibernate.stalestateexception: batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1 异常的文章都和我们的情况不符。该异常的描述的意思是:本次更新本来期望能得到更行成功一条的返回信息,却得到成功0条,于是hibernate就报错了。
?
? 根据反复的测试和debug,发现几个特点:1. 可以更新的记录总是可以更新;2. 更新失败的总是更新失败;3. 新增的记录总是可以更新成功;4. 可以更新的和不可以更新的记录间找不出规律能将两类区分;5. (最重要的一点)不能更新的记录手动也无法更新。
?
? 上面的第5点让我想起本周虚拟机挂掉的情况,我们的系统都跑在虚拟机上,本周一所有的虚拟机都挂掉了,后来由维护人员恢复了。难道这次宕机让硬盘受到损害导致mysql部分数据只能读无法写?为了验证这个想法,我把数据库全部导出然后再全部导入,问题解决了!
?
这真是个有趣的问题,什么样的损害会导致mysql只能读取一条记录但是无法修改它呢?
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product