我正在运行postgresql-server-16.3-3.fc41.x86_64
并想要为XWiki wiki 软件创建一个数据库。
按照此处详细的说明,我应该发出以下CREATE DATABASE指令:
CREATE DATABASE xwiki
WITH
OWNER = postgres
ENCODING = 'UNICODE'
LOCALE_PROVIDER = 'builtin'
LOCALE = 'C.UTF-8'
TABLESPACE = pg_default;
当我发布该声明时,我得到:
ERROR: unrecognized locale provider: builtin
这是出乎意料的,因为 PostgreSQL 文档指出这builtin
是一个有效的关键字。从页面中可以看到CREATE DATABASE
:
locale_provider
:指定此数据库中默认排序规则使用的提供程序。可能的值是builtin
、icu
(如果服务器是使用 ICU 支持构建的)或libc
。默认情况下,提供程序与模板的提供程序相同。有关详细信息,请参阅 第 23.1.4 节 。
这个错误信息从何而来?
或者,我可以使用LOCALE_PROVIDER
等于libc
,与模板数据库 的区域设置提供程序相同template1
。在这种情况下,排序规则也必须等于模板数据库 的排序规则template1
。那一个恰好是en_US.UTF-8
(请注意,根据字符集支持的文档,UNICODE
实际上意味着UTF-8
,因此没有矛盾):
CREATE DATABASE xwiki
WITH
OWNER = postgres
ENCODING = 'UNICODE'
LOCALE_PROVIDER = 'libc'
LOCALE = 'en_US.UTF-8'
TABLESPACE = pg_default;
这很好用。
或者可以使用具有适当ICU 语言环境的ICU(虽然我不知道 XWiki 是否可以处理这个问题。但它应该可以,毕竟它只是一个语言环境):
CREATE DATABASE xwiki
WITH
OWNER = postgres
TEMPLATE = 'template0'
ENCODING = 'UNICODE'
LOCALE_PROVIDER = 'icu'
ICU_LOCALE = 'en-US'
TABLESPACE = pg_default