使用java jdbc写入数据到tidb后查询不到数据,INSERT时没有异常信息,事务提交也是正常提交没有任何异常报错

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】6.5.0
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】接口程序保存数据到数据库,执行保存sql成功,但是数据库表中数据不存在,查询不到,这个问题有什么排查思路吗?
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】

insert 没有异常,如果没数据,就只有可能事务没提交,所以数据最后没持久化

建议跟踪下事务执行的情况

除了未提交,也排查下是否有回滚或者有其他软件在修改数据

这种描述,大概率还是插入报错了,但是异常在某处被吃了,还是排查下保存数据的代码吧。或者把代码发出来,看下到底是怎么插入的

1 个赞

1.检查应用是否有异常信息,或是回滚信息(重点)
2.你手动测试下,多个事务,一个插入,一个查询,如果能插入后。能查询到数据,那么就不是数据库的问题。

后端的log先看下,再看下数据库的log

好的,多谢

目前通过程序日志来看确实sql执行没有报错,如果捕获异常的话会有日志的,事务也是可以正常提交没有错误信息,所以很奇怪 :sweat_smile:

代码发出来看下,大概率是insert没执行或者没commit

1 个赞

100%代码有问题,一个数据库如果这种基础能力都有bug就离了大谱了。

以往类似问题,常见的原因是代码是运行在RC事务隔离级别下的逻辑,但是tidb的默认事务隔离级别是RR。

你的代码不清楚是不是这个原因,可以从这个方向查一下。

剩下的都是代码调试的问题了,多打印,多执行。别浪费时间怀疑数据库的基础能力了。

可以打开了应用trc