postgresql无法创建数据库解决

用navicat 16.3.7连接数据库postgresql 17.2,创建数据库报错

template database 'template1' has a collation version mismatch

1
2
3
ERROR: template database 'template1' has a collation version mismatch
DETAIL: The template database was created using collation version 2.36, but the operating system provides version 2.31.
HINT: Rebuild all objects in the template database that use the default collation and run ALTER DATABASE template1 REFRESH COLLATION VERSION, or build PostgreSQL with the right library version.

这个错误表明,模板数据库 ‘template1’ 的排序规则版本(collation version 2.36)与操作系统提供的版本(2.31)不匹配,导致无法成功创建新数据库。

下面我将解释问题原因并提供解决方案。

问题原因

在 PostgreSQL 中:

排序规则(Collation) 是定义字符串比较和排序规则的机制,用于文本数据的排序和搜索操作。

模板数据库:创建新数据库时,PostgreSQL 默认使用 ‘template1’ 作为模板,将其设置(包括排序规则)复制到新数据库。

版本不匹配:错误显示 ‘template1’ 使用的是排序规则版本 2.36,而当前操作系统只支持 2.31。这种不匹配可能是因为 PostgreSQL 安装时所在的系统排序规则版本较新,后来被迁移到了排序规则版本较旧的系统上。
由于新数据库依赖模板数据库的排序规则,而操作系统无法支持 ‘template1’ 的较新版本(2.36),创建数据库时就会失败。

解决方案

以下是解决此问题的几种方法。由于您使用的是 Navicat(一个图形化工具),我将尽量提供简单易行的步骤,并优先考虑通过 SQL 命令或 Navicat 操作完成的方法:
方法 1:尝试刷新 ‘template1’ 的排序规则版本
步骤:
在 Navicat 中连接到您的 PostgreSQL 服务器。
打开 SQL 控制台(或查询窗口),运行以下命令:

1
ALTER DATABASE template1 REFRESH COLLATION VERSION;