如何在DigitalOcean托管PostgreSQL数据库中设置LC_COLLATE?
解决DigitalOcean托管PostgreSQL集群设置LC_COLLATE的问题
由于DigitalOcean的托管PostgreSQL控制台不支持直接指定LC_COLLATE创建数据库,而PostgreSQL不允许在数据库创建后修改该参数,你可以通过以下方式处理:
通过SQL命令自定义创建数据库
- 使用psql或任意SQL客户端连接到你的集群。
- 先确认目标排序规则(collation)是否在集群中可用:
SELECT name FROM pg_collation; - 借助
template0模板创建数据库(template1继承了集群默认排序规则,无法直接覆盖),示例命令:
注意:CREATE DATABASE your_target_db WITH OWNER = your_db_user ENCODING = 'UTF8' LC_COLLATE = 'your_desired_collation' LC_CTYPE = 'your_desired_collation' TEMPLATE = template0;LC_COLLATE与LC_CTYPE通常需保持一致,且必须与数据库编码兼容。
若目标排序规则未安装
如果所需的collation不在集群可用列表中,由于DigitalOcean托管集群不允许用户自行安装系统级语言包,你需要联系其支持团队,请求在集群所在服务器上安装对应locale包,之后才能使用该规则创建数据库。极端方案:重新创建集群
若上述方法都无法实现,你只能新建一个托管集群,在创建流程中指定所需的默认locale(该设置会决定集群的LC_COLLATE和LC_CTYPE),之后再迁移现有数据到新集群。
内容的提问来源于stack exchange,提问作者Pablo Alexis Domínguez Grau
相关产品推荐
相关产品推荐

