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表中的數據
主要可能原因應該是插入數據前和插入數據後的數據結構不一致。通過刪表重建數據來解決。
oracle數據庫中有數據,通過pl/sql查詢不到,用sqlplus能查到,PL/SQL developer會對數據進行本地緩存