使用navicat新旧版本,连接PostgreSQL高版本报错问题图文解决办法

一、问题现象:

使用Navicat来连接PostgreSQL数据库,发现连接不上,报错信息如下:
在这里插入图片描述

错误: 字段 d.datlastsysoid 不存在
LINE 1: …, ‘pg_database’) AS comment, t.spcname, d.datacl, d.datlasts…
^

在这里插入图片描述

错误: 字段 c.relhasoids 不存在
LINE 1: SELECT c.oid, obj_description(c.oid), c.relhasoids AS hasoi…
^

在这里插入图片描述
错误: 字段 c.consrc 不存在
LINE 1: …y, c.confupdtype, c.confdeltype, c.confmatchtype, c.consrc, …
^
HINT: 也许您想要引用列"c.conkey"或者列"c.conbin"。

二、出现原因

pgsql 15版本以后,有些系统表的列名改了,pg_database表里的这一个列被删除了
在这里插入图片描述

三、解决方法:

1、升级Navicat版本:

将navicat升级到16.2以上版本;

2、使用低版本的postgreSQL:

降级pgsql、老版本PostgreSQL仍然可用。

3、修改Navicat的dll二进制文件:

修改内容以datlastsysoid 为例,其他几个报错修改方法相同

navicat版本15

找到navicat安装目录,有一个libcc.dll文件。

在这里插入图片描述
备份这个文件;进入网站 https://hexed.it/ 打开本地的libcc.dll 文件;右侧点击搜索,关键词 SELECT DISTINCT datlastsysoid ;找到之后,把 datlastsysoid 这几个字,改成 dattablespace ;然后把文件下载回来,放回原处。

在这里插入图片描述
最后,重启Navicat,可以发现无论老和新版本的pgsql都可以正常访问了。
在这里插入图片描述

navicat版本11

找到navicat安装目录,有一个navicat.exe文件。
在这里插入图片描述

备份这个文件;进入网站 https://hexed.it/ 打开本地的navicat.exe 文件;右侧点击搜索,关键词 SELECT DISTINCT datlastsysoid ;找到之后,把 datlastsysoid 这几个字,改成 dattablespace ;然后把文件下载回来,放回原处。

在这里插入图片描述

最后,重启Navicat,可以发现无论老和新版本的pgsql都可以正常访问了。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值