篇首语:本文由编程笔记#自由互联小编为大家整理,主要介绍了oracle数据库中有数据,通过pl/sql查询不到,用sqlplus能查到,PL/SQL developer会对数据进行本地缓存相关的知识,希望对你有一定的参考价值。
这几天遇到了两个问题,都很奇葩,苦恼了三天,最终还是定位出来了。
问题一、通过pl/sql developer插入数据到远程oracle数据库服务器,通过pl/sql developer查询能查询到数据,但是通过远程Oracle的sqlplus却查不到数据,应用程序通过mybatis进行查询也查不到数据。
在问题发生后,由于本人mybatis不熟悉,一直怀疑是语法和配置除了问题,定位问题一直这两个方向下手,从官方文档看,语法是没有问题的,但是还是按照自己的怀疑各种改,各种试,一直怀疑是能查询出来结果,是mybatis转换java对象时出了问题,后来调试进入到最根部,JDBC访问数据处,还是没有数据,最终判断不是mybatis出了问题,问题还是出在了数据预置的地方,重新通过服务器上的sqlplus预置数据,数据本查询出来。从而断定是pl/sql developer自己对新增的数据做了缓存,没有插入到服务器中。问题解决。
问题二、通过应用查询插入数据,但查询的时候查询不出来,通过pl/sql developer进行查询也是查询不出来,但是在远程的oracle服务器上通过sqlplus却能查询出来。
刚开始应用查询有问题,发起查询列表的语句没有执行。还是就是通过pl/sql developer新建表结构到远程oracle服务器,由于应用中的实体Bean和数据库中的字段类型不匹配。都可能导致查询数据有问题。通过问题一的解决断定PL/SQL developer会对表结构,表数据做缓存。还发现的一个现象是,第一次连接虽然能连接上,但是执行sql的按钮灰色,再通过他连接其他的数据库,按钮发亮,在切换到之前的数据库,按钮才发亮,这个过程,也说明了PL/SQL developer是有问题的。PL/SQL developer对表结构和数据做缓存。
场景是这样的:
项目架构是spring+mybatis+tk.mybatis+springmvc
使用mybatis的扩展工具tk.mybatis省去了一般的增删改成冗余代码,由于对mybatis语法不是很熟悉,一直怀疑是
使用Mybatis查询,和使用pl/sql查询t_product_info表中的数据
主要可能原因应该是插入数据前和插入数据后的数据结构不一致。通过删表重建数据来解决。