You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从SQL Server迁移至PostgreSQL时,添加不区分大小写COLLATION失败

解决PostgreSQL创建不区分大小写COLLATION失败的问题

错误原因

报错核心是操作系统找不到en-u-ks-primary对应的locale数据,同时你的CREATE COLLATION语句参数使用有误——针对ICU provider,PostgreSQL要求用LOCALE参数而非LC_COLLATE/LC_CTYPE。

解决方案

1. 修正CREATE COLLATION语句格式

针对ICU provider,正确的语句写法应使用LOCALE参数指定ICU locale字符串:

CREATE COLLATION main.case_insensitive_collation (
    PROVIDER = icu,
    LOCALE = 'en-u-ks-primary',
    DETERMINISTIC = FALSE
);

2. 安装系统缺失的ICU locale数据

Debian系统默认可能未安装完整的ICU locale包,执行以下命令补装:

sudo apt-get update && sudo apt-get install locales-all

安装完成后重新执行修正后的CREATE COLLATION语句。

3. 备选方案:使用通用不区分大小写ICU locale

若en-u-ks-primary仍无法识别,可尝试通用的跨语言不区分大小写localeund-u-ks-primary:

CREATE COLLATION main.case_insensitive_collation (
    PROVIDER = icu,
    LOCALE = 'und-u-ks-primary',
    DETERMINISTIC = FALSE
);

4. 验证PostgreSQL的ICU支持

确认你的PostgreSQL实例已启用ICU功能:

SELECT name, setting FROM pg_settings WHERE name = 'icu_enable';

返回结果中setting为on则表示ICU功能正常;若为off,需重新编译PostgreSQL并启用ICU支持(Debian官方发布的PostgreSQL包默认已启用)。

内容的提问来源于stack exchange,提问作者NehaS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 04:55:23