ruby-on-rails 我可以在2022年的postges中创建带有icu排序的数据库吗?

7tofc5zh  于 2022-12-20  发布在  Ruby
关注(0)|答案(1)|浏览(120)

我想在PostgreSQL和rails应用程序中使用icu排序规则。我在database.yml中指定了icu排序规则,如下所示:

adapter: postgresql
  ctype: ja-x-icu
  collation: ja-x-icu

但我得到了以下错误:

Caused by:
PG::WrongObjectType: ERROR:  invalid locale name: "ja-x-icu"

我发现了一些问题,说我们不能在“创建数据库”中使用ICU排序规则。
Get und-x-icu as collation and character type in Postgres 10 and win server 2008
现在的情况是否仍然是这个问题呢?
如果是这样,我如何创建数据库与icu排序?
提前谢谢你。(我使用的是Rails7和Postgres 11,但如果需要的话,我可以升级到更高的版本。)

5uzkadbs

5uzkadbs1#

只有PostgreSQL v15或更高版本才支持此功能。
如果您使用的是v15或更高版本,我猜您的错误在于您只是使用了

initdb --encoding=UTF8 --locale=ja-x-icu datadir
The files belonging to this database system will be owned by user "laurenz".
This user must also own the server process.

initdb: error: invalid locale name "ja-x-icu"

你得换个方式:

initdb --encoding=UTF8 \
   --locale-provider=icu --locale=ja_JP.utf8 --icu-locale=ja-x-icu datadir

使用--locale作为C库语言环境。即使使用ICU排序规则(--icu-locale=ja-x-icu --locale-provider=icu),也必须指定C库语言环境。

相关问题