Postgresql

OS X、PostgreSQL 9.4.5 上的 psql“無效客戶端編碼”錯誤

  • November 12, 2015

我目前正在執行一個 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=UTF8postgresql.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_PATHenv 變數,/etc/profile以使其在全域級別可見,而不僅僅是從互動式 shell 中可見。

我將以下行添加到/etc/profile

export DYLD_LIBRARY_PATH='/Library/PostgreSQL/9.4/lib'

我希望這對其他人有幫助。

丹尼爾,非常感謝

client_encoding是一個 libpq 連接選項,大約在 2011 年添加,舊版本無法辨識。

錯誤:

psql:無效的連接選項“client_encoding”

來自於動態連結 newerpsql和 old libpq,例如係統附帶的那個。

在 Mac OS X 上,可以通過將DYLD_LIBRARY_PATH(相當於 linux’s LD_LIBRARY_PATH)設置為較新 PostgreSQL 安裝的路徑來解決此問題。

根據評論和更新,確認在全域設置此變數時有效/etc/profile

引用自:https://dba.stackexchange.com/questions/120309