使用Navicat Premium 15连接PostgreSQL 15的数据库时,会报错datlastsysoid does not exist
运行环境:
PostgreSQL 15
Navicat Premium 15.0.12
报错过程:
使用Navicat Premium 15连接PostgreSQL 15的数据库时,会报错datlastsysoid does not exist,如下:
报错截图
报错原因:
PostgreSQL 15从pg_database表中移除了datlastsysoid这个字段,因此Navicat 15.0.29或16.1之前的版本在查找这个字段的时候会报这个错。
解决方法
- 升级Navicat版本到15.0.29或16.1;
- 使用PostgreSQL 15之前的版本;
- 修改文件:
① 找到 Navicat安装文件夹中的libcc.dll文件,并备份;
② 使用16进制编辑器(HexEd.it — 基于浏览器的十六进制编辑器)将libcc.dll文件中的"SELECT DISTINCT datlastsysoid"更改为"SELECT DISTINCT dattablespace",如下:
修改libcc.dll文件
dattablespace对应的16进制码为:64 61 74 74 61 62 6C 65 73 70 61 63 65
③ 将修改好的文件先另存为libcc.txt,然后再在文件夹中将其改为libcc.dll,放到之前libcc.dll所在的文件位置即可。
注:使用十六进制编辑器修改libcc.dll另存为dll文件格式后,运行navicat可能会报错,因此需要另存为txt,然后再通过修改文件后缀来将文件改成dll格式。