在使用 DB2 UDB 時,常會遇到代碼頁不相容導致連線失敗的情況。本文針對 Windows、Unix、Linux 平台上的 DB2 5.x/6.x/7.x 版本,詳細說明錯誤成因與解決步驟。
當嘗試連線資料庫時,系統回傳以下錯誤訊息:
db2 connect to db_name
SQL0332N There is no available conversion for the source code page "819" to the target code page "1386". Reason Code "1". SQLSTATE=57017
這表示來源代碼頁 (819) 與目標代碼頁 (1386) 之間無法進行轉換,導致連線中斷。
DB2 要求來源與目標代碼頁必須相容。錯誤發生時,用戶端環境的代碼頁 (819,通常為 ISO-8859-1) 與資料庫伺服器的代碼頁 (1386,簡體中文 GBK) 不匹配,且缺乏對應的轉換表。
在發出連線指令失敗的用戶端機器上,於 DB2 命令視窗依序執行以下指令:
db2set db2codepage=1386 -i instance_name
db2 terminate
說明:
db2codepage=1386:將用戶端代碼頁強制設為 1386 (GBK),與資料庫端一致。-i instance_name:指定實例名稱(若為預設實例可省略)。db2 terminate:終止所有後台進程,使設定生效。執行完成後,重新發出 db2 connect to db_name 即可成功連線。
若環境中同時存在多個代碼頁需求,建議在資料庫建立階段統一規劃字符集(如使用 UTF-8),並確保用戶端、伺服器、應用程式三端代碼頁一致,可從根本上避免此類問題。