一、環境
操作系統:Windows Server 2008 R2
數據庫:PostgreSQL 9.2 + PostgreSQL 11.4 (因應用特殊需求,使用了兩個版本數據庫)
應用:Tomcat 8.5.51
二、問題描述
現場一般對於同一應用部署有測試、正式兩套,在測試環境運行正常的系統,正式環境部署后,系統內數據均展示。
三、解決過程
1、查看后台錯誤日志,發現Windows系統Tomcat日志刷新太快,最開始是的錯誤日志都刷過去了,后面的日志也沒有多少參考價值,未發現問題。
2、切換正式、測試兩套環境所連數據庫,確定為數據庫問題,應用部署包正常。
3、檢查正式數據庫主要表,無缺失,可以正常訪問。
4、通過fiddler跟蹤數據調取接口,然后使用postman進行測試,發現測試環境有數據返回,正式環境返回查詢成功但無實際數據返回。這一步其實比較誤導人,不清楚為啥根本沒有連接進入數據庫還會返回查詢成功的提示。
5、找到第四步接口的具體執行SQL,通過Navicat連接數據庫執行,正式測試均可以返回正常結果(比較頭大,按理說正式環境應該出錯才對呀,咋不按套路出牌,不講武德呀….)。
6、回歸第一步,鼓搗了一下日志輸出不行,直接將文件復制到linux環境下,通過tail命令打印實時錯誤日志,發現最初的錯誤提示如下:
7、聚焦第六步錯誤,進行密碼、密碼過期等檢查,均無問題。
8、無意中發現有人遇到類似的問題(參考:https://blog.csdn.net/u011078141/article/details/88665952),jdbc連接Postgresql數據庫時出現這個錯誤,用Navicat等正常,這個和用戶密碼認證方式有關,修改
data文件夾下的pg_hba.conf文件,設置認證方式為trust,保存重啟服務后測試解決問題。
一個簡單的問題花了近兩天的時間才解決,這罪遭的…..