OS X、PostgreSQL 9.4.5 上的 psql“無效客戶端編碼”錯誤
我目前正在執行一個 OS X Lion Server 系統,該系統附帶一個內置且不可升級的 PostgreSQL 版本。經過多年的使用,我最終決定離開內置版本並安裝一個獨立版本。我禁用了內置安裝並從 EDB 下載了安裝程序並按照嚮導進行操作。在許多關於編碼和語言環境的問題之後,我終於設法設置一個沒有語言環境和 UTF8 編碼的數據庫。我發出了以下命令:
initdb -D /path/to/data --no-locale --encoding=UTF8
如果我使用 pgAdminIII 連接,我不會遇到任何問題。該命令
show client_encoding;
顯示UNICODE
為 pgAdminIII 使用的編碼(預設安裝給了我一個SQL_ASCII
編碼,這就是我執行該initdb
命令的原因)。問題是我無法使用
psql
. 無論我傳遞給它,我都會收到以下錯誤:psql: invalid connection option "client_encoding"
我在 Internet 上進行了搜尋,但沒有找到任何可以解決我的問題的方法(例如發布
env PGCLIENTENCODING=UTF8
和添加client_encoding=UTF8
到postgresql.conf
)。
otool -L /Library/PostgreSQL/9.4/bin/psql
返回:/Library/PostgreSQL/9.4/bin/psql: @loader_path/../lib/libpq.5.dylib (compatibility version 5.0.0, current version 5.7.0) @loader_path/../lib/libssl.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0) @loader_path/../lib/libedit.0.dylib (compatibility version 1.0.0, current version 1.48.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
任何人都可以幫我弄清楚嗎?
非常感謝所有 Pietro
更新
我在編輯 bash 配置文件後忘記註銷然後登錄。Daniel Vérité 的建議是正確的。我只是編輯了
DYLD_LIBRARY_PATH
env 變數,/etc/profile
以使其在全域級別可見,而不僅僅是從互動式 shell 中可見。我將以下行添加到
/etc/profile
:export DYLD_LIBRARY_PATH='/Library/PostgreSQL/9.4/lib'
我希望這對其他人有幫助。
丹尼爾,非常感謝
client_encoding
是一個 libpq 連接選項,大約在 2011 年添加,舊版本無法辨識。錯誤:
psql:無效的連接選項“client_encoding”
來自於動態連結 newer
psql
和 oldlibpq
,例如係統附帶的那個。在 Mac OS X 上,可以通過將
DYLD_LIBRARY_PATH
(相當於 linux’sLD_LIBRARY_PATH
)設置為較新 PostgreSQL 安裝的路徑來解決此問題。根據評論和更新,確認在全域設置此變數時有效
/etc/profile