期间,如何解决“错误:环境请求的语言环境无效”从Ubuntu Server 14.04升级到16.04之后,我还必须将Postgres群集从9.3升级到9.5。正常的方式做到这一点是先删除,升级创建的(空)9.5集群:在postgresql集群升级(pg_upgradecluster)
#pg_dropcluster 9.5主要
,然后升级旧的9.3群集到9.5:
#pg_upgradecluster 9.3主要
然而这将导致一个错误:
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "en_US.UTF-8",
LC_ALL = (unset),
LC_PAPER = "nl_NL.UTF-8",
LC_ADDRESS = "nl_NL.UTF-8",
LC_MONETARY = "nl_NL.UTF-8",
LC_NUMERIC = "nl_NL.UTF-8",
LC_TELEPHONE = "nl_NL.UTF-8",
LC_IDENTIFICATION = "nl_NL.UTF-8",
LC_MEASUREMENT = "nl_NL.UTF-8",
LC_TIME = "nl_NL.UTF-8",
LC_NAME = "nl_NL.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to a fallback locale ("en_US.UTF-8").
Error: The locale requested by the environment is invalid.
Error: Could not create target cluster
这意味着我不能升级到9.5的Postgres。
我检查了所有区域设置:
- 的是en_US.UTF-8语言环境存在,并且经过locale -a检查是否正确生成(它显示en_US.utf8在其列表)
- 文件/ etc/environment中包含LC_ALL =的en_US.UTF-8和LANG =的en_US.UTF-8
- 的/ etc /默认/区域包含LANG,语言相同的设置和LC_ALL
- 我可以用Perl的开始,没有任何问题“ perl -e exit“
错误消息是从pg_updatecluster调用的pg_createcluster脚本生成的。但从命令行运行pg_createcluster工作得很好,没有任何问题。
解决方法的问题:
我用以下解决方案至少可以得到转换工作。我编辑在/ usr/bin中/ pg_upgradecluster脚本,如下所示:
- 找到它通过寻找评论称pg_createcluster代码“创建新集群”
- 该代码由一系列的“推”的结束于可疑行: 删除$ ENV {'LC_ALL'}
- 请注意,此LC_ALL为,正好为错误消息中未设置的变量。
- 注释掉删除评论,在它之前加上一个'#',然后保存。
这至少可以解决这个问题,并且可以让您运行升级。
我的问题:这是pg_upgradecluster脚本中的一个错误,还是我的系统上有其他错误?