背景
今天在使用Datagrip查询库表数据时,发现新增的一条数据一直没有查询到,可以代码日志上显示明明已经成功插入了一条日志数据,按理不应该啊,所以展开了下面的排查
排查思路
- 首先想到了,会不会是连错了库,因为这张表是在多个库中都存在的,后面去看库连接配置,库是正确的,排除了这种情况。
- 难道代码写错了,然后开始检查代码,代码是完全正确的
- 会不会是工具问题,开始换个工具查这个东西了,果然,数据已经维护进去了,所以,肯定是工具的问题了(思想的局限性,压根就没有想过工具会出问题,毕竟这个是大名鼎鼎的jetbrains出品的,而且这么低级的错误不应该啊,会不会是设置问题,果然,最后验证的结果就是设置问题。)
解决
Transaction Mode 事务模式
- Auto 自动
如果是auto,那么查询时,所有数据库中的变更,我们通过select查询时,可以实时查询出来,同时对于新增以及修改等操作,也会自动提交,所以对于新增以及修改需要谨慎使用该模式
- Manual 手动
对于手动这种模式,对于select查询,就需要设置下面的Transaction lsolation(事务隔离级别),我的问题就是这里选择的有问题,导致实时插入的数据,我这边查询不出来。
可以选择read committed,read uncommitted这两种隔离级别。