期間,如何解決「錯誤:環境請求的語言環境無效」從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腳本中的一個錯誤,還是我的系統上有其他錯誤?