第一篇文章。在 debian buster light 上使用 postgresql 11.9 时,我想向 postgreqls 列表添加一个新的语言环境。做select * from pg_collation;
在psql
显示我想要的区域设置不在列表中。
为了添加新的语言环境,我首先通过取消注释行 sv_SE.UTF-8 UTF-8
向我的 debian 添加了新的语言环境。在/etc/locale.gen
。然后我运行/usr/sbin/locale-gen
这是成功的。之后locale -a
和localectl list-locales
显示我新添加的区域设置。
现在我想更新来自 c-lib 的 postgresql 中的语言环境列表。这是使用 pg_import_system_collations
完成的记录在这里https://www.postgresql.org/docs/11/functions-admin.html
正在运行psql
作为用户 postgres 并执行 select pg_import_system_collations('pg_catalog');
产量
pg_import_system_collations
-----------------------------
0
(1 row)
因此不会导入新的语言环境。我不知道为什么。有什么想法吗?
编辑:将“更新”与答案转换为单独的答案
最佳答案
以上所有操作都是在不重新启动任何守护程序、服务、主机等的情况下完成的。
我现在已经让 systemctl 重新启动 postgresql。现在 pg_import_system_collations 按预期工作。我的结论是 pg_import_system_collations 的文档有点不对劲。显然,它会在启动时缓存系统区域设置,如果需要,可以使用 pg_import_system_collations 导入它们。
看看其他 postgresql 用户是否看到相同的行为以及它是否随操作系统而变化,这将是很有趣的。
关于postgresql pg_import_system_collations 不导入操作系统添加的语言环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64994964/