PostgreSQL区域设置修改:正确操作步骤及是否需重新安装?
PostgreSQL区域设置修改及升级错误解决
一、修改区域设置的正确操作
不需要回退重装PostgreSQL 10,正确操作步骤如下:
- 备份现有数据:先对PostgreSQL 15集群做全量备份,避免数据丢失,执行命令:
pg_dumpall -f /自定义路径/backup.sql - 停止并删除现有15集群:若集群名为
main,执行:sudo pg_dropcluster --stop 15 main - 配置系统区域设置:
- 安装目标区域包(以
zh_CN.UTF-8为例,替换为你需要的区域):sudo locale-gen zh_CN.UTF-8 - 编辑
/etc/default/locale文件,写入以下内容(替换为目标区域):LANG=zh_CN.UTF-8 LC_ALL=zh_CN.UTF-8 LC_CTYPE=zh_CN.UTF-8 - 重启系统或执行
source /etc/default/locale使设置生效。
- 安装目标区域包(以
- 用新区域创建15集群:
sudo pg_createcluster --locale zh_CN.UTF-8 15 main - 恢复备份数据:切换至postgres用户后执行:
psql -d postgres -f /自定义路径/backup.sql
二、升级时的错误解决
你遇到的pg_upgradecluster错误,核心是系统区域配置不规范:LC_CTYPE被设为UTF-8,这不是完整的区域名称,必须使用en_US.UTF-8这类带语言、国家编码的完整格式。解决步骤:
- 安装对应完整区域包:
sudo locale-gen en_US.UTF-8 - 修正环境变量:
- 临时生效:
export LC_CTYPE=en_US.UTF-8 export LANG=en_US.UTF-8 - 永久生效:编辑
/etc/default/locale,确保内容为:LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_CTYPE=en_US.UTF-8
- 临时生效:
- 重新执行升级命令:
sudo pg_upgradecluster 10 main
补充说明
PostgreSQL的区域设置是集群创建时确定的,一旦创建完成无法直接修改,因此更换区域只能通过「备份-删旧集群-建新集群-恢复数据」的流程操作,无需回退到旧版本。
内容的提问来源于stack exchange,提问作者Karlean
相关产品推荐
相关产品推荐

