由于以下原因,我在设置数据库方面遇到了麻烦:
$ 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-8
和sudo dpkg-reconfigure locales
。有谁知道为什么LC_CTYPE似乎退回到en_US而不是en_US.UTF-8?
答案 0 :(得分:1)
集群的默认语言环境由initdb
设置:
在数据库集群处于活动状态时,语言环境支持会自动初始化 使用
initdb
创建。initdb
将使用以下命令初始化数据库集群 默认情况下,其执行环境的语言环境设置[...]如果要使用 不同的语言环境(或者您不确定系统是哪个语言环境 设置为),则可以准确指示initdb
使用哪个语言环境 指定--locale
选项。
您可以使用createdb --locale
覆盖新数据库的默认设置。
如果您确实需要修改现有集群的默认设置,则可以使用不同的语言环境删除并重新创建template1
(请参见this example)。