Tommy 碎碎念

Tommy Wu's blog

« 上一篇 | 下一篇 »

PostgreSQL ODBC 連線的 client encoding mismatch 錯誤
post by tommy @ 01 二月, 2007 00:01
前天把公司某台主機的 PostgreSQL 由 8.0.3 升級到 8.2.1. 原本以為一切都正常, 不過後來發現, 在另外一台 Windows 的機器上頭, 使用 php 寫的一些透過 ODBC 連線的程式都無法正常執行.

原本以為是 PostgreSQL ODBC driver 的問題, 特地上網抓了新版的回來用, 結果一樣. 後來在程式中加上顯示 odbc 錯誤訊息的功能後, 出現了下頭的錯誤:

client encoding mismatch 

到 Google 找了一下, 發現自從 PostgreSQL 8.1 之後, 把原本的 UNICODE 改成 UTF-8, 結果, 在 windows 底下使用 ODBC 連線到  UTF-8 的資料庫時, 就會出現上頭的錯誤訊息.

不過, 似乎沒有看到什麼方式可以在連線時設定要使用的字元集. 只有看到這篇文章 , 上頭提到了可以把使用者所使用的字元集改成  latin1, 來避開這個問題:

alter user <user> SET client_encoding to LATIN1; 

不過, 我們的系統, 該使用者並非只用在 windows 上頭, 在其他的 linux 上頭也是用這個使用者, 而且, 雖然在 windows 上頭的這個, 並不會用到 UTF-8 (UNICODE) 的字元, 不過, 其他的地方, 仍可能使用到.

所以, 我們就建立一個新的使用者, 把這個新的使用者的字元集改成 latin1, 然後讓所有在 windows 下用到 ODBC 連線的程式, 都改用這個新的使用者. 這樣子, 就可以解決這個問題了.

Del.icio.us Furl HEMiDEMi Technorati MyShare
迴響
暱稱:
標題:
個人網頁:
電子郵件:
迴響

  

Bad Behavior 已經阻擋了 149 個過去 7 天試圖闖關的垃圾迴響與引用。
Power by LifeType. Template design by JamesHuang. Valid XHTML and CSS