1. 程式人生 > >由於PostgreSQL9.x二進位制輸出格式預設值改變導致的讀取圖片錯誤

由於PostgreSQL9.x二進位制輸出格式預設值改變導致的讀取圖片錯誤

今天從社群郵件看到一個這樣的問題,感覺很有意思,在這分享給大家~具體如下:

問題現象:

作者有一個很老的Java應用,當時後端採用的PostgreSQL資料庫版本為8.x,該系統除了正常的資料增刪改查違,有一項功能是把圖片儲存到pgsql中,儲存類行為bytea,然後再讀取使用。

作者近期做了資料庫的遷移,將pgsql8.x中的資料遷移到pgsql11版本上,遷移完成後,Java應用端的其他功能都正常,只有圖片無法正常讀取顯示了,但是寫入是沒問題的。這個問題困擾了作者很久。

解決辦法:

經過社群大神指點後,得知bytea的預設輸出格式從pgsql9.x版本開始改變了,在9.x版本之前,bytea_output的預設值為escape,9.x之後,bytea_out的預設值就變成了hex。所以如果要與老版本的前端應用適配,可以修改資料庫引數為escape即可解決這個問題。