客戶端安裝 DB2 Client、配妥遠端資料庫別名後,發起連線立即報錯:
SQL0332N There is no available conversion for
the source code page "1386" to the target code
page "819". Reason Code "1". SQLSTATE=57017
本質上是客戶端實際編碼與資料庫定義編碼不一致,且 DB2 無法自動橋接兩者。
db2set DB2CODEPAGE=1386 -i DB2INST
db2 terminate
關鍵動作解析:
db2set DB2CODEPAGE=1386:告知 DB2 Client「我的實際環境編碼是 1386」,而非讓 DB2 自動偵測(偵測錯誤導致預設 819)-i DB2INST:指定實例層級生效,避免全域污染db2 terminate:強制回收背景進程(db2bp 等),使新環境變數立即生效重新執行連線命令,連線成功,中文資料存取正常,無亂碼、無截斷。
| 檢查點 | 命令/位置 | 預期結果 |
|---|---|---|
| 資料庫實際代碼頁 | db2 get db cfg for <db> | find "code page" | 與伺服器作業系統語系一致 |
| 客戶端作業系統語系 | 控制台 → 區域與語言 → 系統地區設定 | 繁體中文 (台灣/香港) → 對應 1386/950 |
| DB2 Client 環境變數 | db2set -all 檢視 DB2CODEPAGE | 已正確設定為 1386 |
| 應用程式連線字串 | JDBC/CLI/ODBC 連線屬性 | 未硬編碼 Codepage 或與環境一致 |
db2 get db cfg 與 db2set -all 一致性檢查核心口訣:DB2CODEPAGE = Client 實際作業系統字碼頁,而非資料庫字碼頁。一致即通,不一致即阻。