Postgresql 在Postgres 10和win server 2008中获取und-x-icu作为排序规则和字符类型

Postgresql 在Postgres 10和win server 2008中获取und-x-icu作为排序规则和字符类型,postgresql,locale,windows-server-2008-r2,collation,Postgresql,Locale,Windows Server 2008 R2,Collation,我已在Windows Server 2008 R2标准64位中成功安装了Postgres 10 我正在尝试创建一个新的数据库,该数据库具有LC\u-COLLATE='und-x-icu'和LC\u-CTYPE='und-x-icu',使用以下SQL CREATE DATABASE hey WITH OWNER = postgres ENCODING = 'UTF8' LC_COLLATE = 'und-x-icu' LC_CTYPE = 'und-x-i

我已在Windows Server 2008 R2标准64位中成功安装了Postgres 10

我正在尝试创建一个新的数据库,该数据库具有
LC\u-COLLATE='und-x-icu'
LC\u-CTYPE='und-x-icu'
,使用以下SQL

CREATE DATABASE hey
    WITH 
    OWNER = postgres
    ENCODING = 'UTF8'
    LC_COLLATE = 'und-x-icu'
    LC_CTYPE = 'und-x-icu'
    TABLESPACE = pg_default
    CONNECTION LIMIT = -1
    TEMPLATE = template0
    ;
我得到
错误:无效的区域名称:“und-x-icu”SQL状态:42809

但是,
SELECT*FROM pg_collation清楚显示
und-x-icu

同样的SQL也适用于我的笔记本电脑(windows 10)

在服务器上安装时,我确实选择了
locale:C
,但在笔记本电脑上安装时,我不记得选择了什么作为区域设置


如何在win server 2008上实现这一点并获得
und-x-icu

文档似乎没有提到这一限制,但您不能在
创建数据库中使用icu排序规则


这在将来可能会得到改进,但目前无法将ICU排序作为默认排序。

在我的笔记本电脑上,如果我还设置了
TEMPLATE=template0
,我可以将
LC\u-COLLATE
LC\u-CTYPE
设置为
'und-x-ICU'
中的
。但我也可以在pgAdmin4的创建>数据库UI菜单中看到
'und-x-icu'
。这些选项在win server 2008中不可用。那么,也许这是一个双赢的服务器操作系统?我应该检查它的可用排序规则吗?或者在服务器的Postgres中安装ICU?但我想它已经存在了。谢谢,这太可怕了。你肯定会在笔记本电脑上收到同样的错误信息。一定是出了什么事。“吓人”是一个…吓人的词。那么,我的笔记本电脑设置有什么问题?我不记得为我做过什么特别的事。我刚刚玩过
CREATE DATABASE
。如果你在答案中看到我的评论,那么带有
'und-x-icu'
的SQL刚刚运行,我正在运行数月的数据库运行良好。总之,选择什么作为对照和c型,而不是
und-x-icu
?只要C就可以了?我的意思是这可能是一个PostgreSQL错误。您的笔记本电脑上的PostgreSQL的确切版本是什么?如果您在笔记本电脑上使用
initdb
创建一个新群集,然后再次尝试使用ICU排序规则创建一个数据库,它是否有效?很抱歉,我不知道如何或在何处运行
initdb
。cmd?psql?我的实验没有成功。但我认为这不是一个bug,因为win 10支持ICU,在我的
C:\Program Files\PostgreSQL\10\bin
中我有ICU。
dll
文件。Win服务器具有相同的。
dll
文件。还是没什么。我在服务器上重新安装了整个Postgres,这次选择了
locale:[默认语言环境]
,我仍然有C、POSIX和English 1252作为校对选项