相关疑难解决方法(0)

在 Postgres 10 中将 ICU 排序规则指定为 `ENCODING`、`LC_COLLATE` 和 `LC_CTYPE`

Postgres 10 获得了使用国际组件进行 Unicode (ICU)排序的能力,而不是依赖于主机操作系统的实现。请参阅Peter Eisentraut在 PostgreSQL 10 中使用 ICU 支持的更强大的排序规则。

那么在创建数据库时究竟如何指定 ICU 排序规则呢?

我确实在CREATE DATABASEto use 中阅读了一个提示,template0而不是template1iftemplate1可能是使用编码和整理而不是您想要的新数据库创建的。并且在使用时template0,您需要启用数据连接以覆盖默认值。

我在 Postgres 10 doc page for Collat​​ion Support中读到:

und-x-icu(用于“未定义”)

ICU“根”整理。使用它来获得合理的与语言无关的排序顺序。

因此,und-x-icu在建立包含多语言文本的新数据库时,这似乎是一个很好的使用价值。当已知某种语言专注于特定语言时,该SELECT命令可以指定另一种排序规则,例如 German de-x-icu。否则,回退到默认值und-x-icu

所以我尝试了以下 SQL 在 Postgres 10 Beta 2 中创建一个数据库。

CREATE DATABASE timepiece_
TEMPLATE 'template0'
ALLOW_CONNECTIONS TRUE
CONNECTION LIMIT -1
ENCODING 'UTF8'
LC_COLLATE 'und-x-icu'
LC_CTYPE 'und-x-icu'
;
Run Code Online (Sandbox Code Playgroud)

失败并出现错误:

[42809] …

postgresql collation postgresql-10 international-components-unicode

6
推荐指数
1
解决办法
2556
查看次数