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

使用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安装目录,有一个libcc.dll文件。

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

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

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

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

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

相关推荐
liuwufei12 分钟前
数据仓库-基于角色的权限管理(RBAC)
数据库·数据仓库·oracle
南城巷陌38 分钟前
如何在Node.js中使用MySql进行数据增删改查
数据库·mysql·node.js
什么半岛铁盒41 分钟前
Linux常用指令-----下
linux·服务器·数据库
2401_857600951 小时前
SSM 垃圾分类系统:点亮环保科技之光
java·数据库·生活
黄名富2 小时前
Redis 附加功能(一) - 数据库
数据库·oracle
2401_840192272 小时前
关于opengauss
数据库·oracle
数据的世界012 小时前
SQL中的子查询
数据库·sql
wh_xia_jun2 小时前
ubuntu 下的sqlite3
linux·数据库
yava_free2 小时前
删除MySQL的多余实例步骤
数据库·mysql·adb
MongoDB 数据平台2 小时前
阿里云数据库MongoDB版助力极致游戏高效开发
数据库·mongodb·阿里云