1. 程式人生 > >伺服器部署及儲存過程問題周結

伺服器部署及儲存過程問題周結

一次部署,耽誤了好長時間,記錄一下,長點記性!

問題:

    本地程式打包,部署到遠端伺服器,訪問同一個介面返回的資料結構不一樣;

抓蟲子:

    1、可能是打的包有問題,再打一次,再打一次,結果跟之前一樣;

    2、在程式中的幾個關鍵點mapParam.put("a","a")、mapParam.put("b","b"),通過訪問介面看能不能全部返回回來,結果本地的都返回回來伺服器的也都返回回來了,但是資料結構還是不一樣;

    3、部署的那個伺服器有點問題?那就打個包在公司內網的伺服器也部署一個吧,結果返回的資料結構跟本地伺服器的一樣(本地的是正確的),為什麼不一樣?

    4、可能是資料庫的問題,遠端伺服器中的Oracle資料庫中的資料是通過kettle從MySQL資料庫實時抽取過來的,我拷貝幾條資料放到本地,咦?遠端和本地返回來的資料值一樣了,但是資料結構還是不一樣,一盆冷水;

    5、會不會是Nginx負載均衡的問題?關掉一個試試,不行;

    6、想到的都試了,還是沒解決。日誌也看了,沒問題啊;不用負載均衡了,都關掉,直接在遠端伺服器執行jar包,走你┏ (゜ω゜)=☞,再訪問一遍,哎呦,報錯了,根據錯誤提示解決問題,嗯,,回家可以睡個好覺了。

總結:當訪問同一個介面,本地和遠端的伺服器返回的資料結構不一樣的時候直接找資料庫對比資料就OK,一般都是這種原因。至於這一次,因為客戶提出PC端頁面中的下限指標為0沒有意義,讓統一成空值,結果在系統中把外網中的下限指標改為空;本地的還沒改,當時沒發現這種情況。當APP訪問這個介面的時候發現數據結構不對(APP專用介面^_^),這是兩伺服器訪問同一個介面返回的資料結構不一樣的主要原因

Oracle儲存過程插入數字為空的情況!

問題:

    Oracle儲存過程,變數有值,但是插入語句執行過後表中的那個欄位的值仍是空?

抓蟲子:

    1、看日誌,沒報錯;

    2、列印那個變數,看是否有值,結果有;

    3、把變數寫死,直接在更新語句中寫一個數字,結果插進去了;

    4、對比資料型別,變數的資料來源的那張表中的型別為number,插入的表中的欄位的型別也是number,沒問題;

    5、我好迷茫,問大神吧,把問題描述一下,截個圖發過去;“資料型別一致,變數有值,執行之後資料為空,也就是說在往資料庫寫入的那一刻這個變數變成空值了,嗯?你這變數名跟欄位名一樣?把變數名改一下試試”,然後問題解決;

總結:變數名不能跟欄位名一樣!!!