PostgreSQL 8.3.7服務器將此異常拋出到我的應用程序。 有誰知道這個錯誤的含義和我能做些什麼嗎?Postgres:「錯誤:緩存計劃不能更改結果類型」
ERROR: cached plan must not change result type
STATEMENT: select code,is_deprecated from country where code=$1
PostgreSQL 8.3.7服務器將此異常拋出到我的應用程序。 有誰知道這個錯誤的含義和我能做些什麼嗎?Postgres:「錯誤:緩存計劃不能更改結果類型」
ERROR: cached plan must not change result type
STATEMENT: select code,is_deprecated from country where code=$1
我想清楚是什麼導致了這個錯誤。
我的應用程序打開了一個數據庫連接並準備了一個SELECT語句來執行。
與此同時,另一個腳本正在修改數據庫表,更改上述SELECT語句中返回的其中一列的數據類型。
我在修改數據庫表後通過重新啓動應用程序解決了這個問題。這會重置數據庫連接,從而使準備好的語句無錯地執行。
我給任何人通過Google搜索ERROR: cached plan must not change result type
加入這個答案。
您可以通過0123'配置pgjdbc
驅動程序來避免此問題。有了這個選項,你不應該反彈你的服務器或刷新你的連接池或任何你可能想出的解決方法。
在Postgres 9.6(AWS RDS)上轉載,我的初始測試似乎表明問題已完全用此選項解決。
文檔:https://jdbc.postgresql.org/documentation/head/connect.html#connection-parameters
你可以看一下pgjdbc
Github issue 451該問題的更多細節和歷史。
你能分享一下PostreSQL的確切版本嗎? 8.3.X? – 2010-05-06 20:49:26