我目前正在运行一个 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 年添加,旧版本无法识别。错误:
来自于动态链接 newer
psql
和 oldlibpq
,例如系统附带的那个。在 Mac OS X 上,可以通过将
DYLD_LIBRARY_PATH
(相当于 linux'sLD_LIBRARY_PATH
)设置为较新 PostgreSQL 安装的路径来解决此问题。根据评论和更新,确认在全局设置此变量时有效
/etc/profile