尝试启动 PostgreSQL,但出现以下错误:
$ pg_ctl -D postgres_data start
server starting
FATAL: postmaster became multithreaded during startup
HINT: Set the LC_ALL environment variable to a valid locale
我的语言环境设置如下:
LANG="en_US.UTF-8"
LC_COLLATE="C"
LC_CTYPE="C"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL="C"
系统是MacOS 10.10.5,PostgreSQL版本是9.5.0。
我听从了 Michael 的建议。现在区域设置值为:
$ locale
LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL="en_US.UTF-8"
但错误仍然存在。
我用 Google 搜索了错误信息,看看是否有人遇到过这个问题,但没有找到解决方案。
答案1
您的语言环境设置错误。
您已将LANG
其定义为en_US.UTF-8
,但其他所有内容均定义为C
。这些是相当不同,将它们混合在一起会引起各种奇怪的现象。
按照错误消息提示进行操作:设置LC_ALL
为正确的语言环境(并设置其余所有语言环境)。
答案2
我已经通过为“postgres”帐户设置 LC_ALL 解决了运行 Postgres 9.5 和 9.6 的 Mac 的问题。
详情请见https://github.com/PostgresApp/PostgresApp/issues/317#issuecomment-251786830