我目前正在開始將應用程序的postgres 8.4 db升級到9.4的過程。實際的數據庫遷移已經完美無缺,但有些應用程序查詢在針對9.4數據庫運行時不會返回奇怪的結果。我爲C#使用NpgSql v2.0.12.0庫。這個問題似乎與存儲以base64字符串編碼的文本數據的幾個表相關。查詢調用postgres解碼函數,以便將編碼數據作爲純文本返回。例如:NpgSql - 從具有解碼功能的查詢返回的錯誤數據
SELECT
decode(user_name, 'base64')::text as user_name
FROM
login
WHERE
login_id = 123;
提交到8.4 DB時,字符串被正確地返回到應用程序。當提交到9.4 DB我得到
\x61646d696e6973747261746f72
在pgAdmin的SQL工具的結果是在這兩種情況下是正確的。我確信這可能是某種編碼問題,但對於我來說我無法弄清楚 - 我已經搜索了好幾個小時,通過postgres文檔挖掘並在這裏無休止地搜索,最終未能找到解決我的問題。希望有一些PostGres的人可以指出我正確的方向來解決這個問題。
什麼是「正確」?顯示你認爲它*應該*也是。猜測你遇到了默認的'bytea_output'設置更改的問題。 –
在這種情況下,正確的響應應該是「管理員」。 – kdavej
Npgsql 2.0.12絕對是古老的...你絕對應該嘗試升級到最新的3.x –