Postgres创建了b语言环境问题

时间:2019-01-30 13:04:18

标签: postgresql locale

由于以下原因,我在设置数据库方面遇到了麻烦:

$ createdb -E UTF-8 -p 5432 nominatim
createdb: database creation failed: ERROR:  encoding "UTF8" does not match locale "en_US"
DETAIL:  The chosen LC_CTYPE setting requires encoding "LATIN1".
ERROR: Error executing external command: createdb -E UTF-8 -p 5432 nominatim

在/ etc / profile中,我将语言环境设置为en_US.UTF-8,当我以postgres用户(或我自己的用户)身份检查“ locale”时,包括LC_CTYPE在内的所有变量都为“ en_US.UTF-8”。另外,我已经运行sudo locale-gen en_US en_US.UTF-8sudo dpkg-reconfigure locales。有谁知道为什么LC_CTYPE似乎退回到en_US而不是en_US.UTF-8?

1 个答案:

答案 0 :(得分:1)

集群的默认语言环境由initdb设置:

  

在数据库集群处于活动状态时,语言环境支持会自动初始化   使用initdb创建。 initdb将使用以下命令初始化数据库集群   默认情况下,其执行环境的语言环境设置[...]如果要使用   不同的语言环境(或者您不确定系统是哪个语言环境   设置为),则可以准确指示initdb使用哪个语言环境   指定--locale选项。

您可以使用createdb --locale覆盖新数据库的默认设置。

如果您确实需要修改现有集群的默认设置,则可以使用不同的语言环境删除并重新创建template1(请参见this example)。