使用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都可以正常访问了。

相关推荐
晚风_END14 小时前
Linux|操作系统|最新版openzfs编译记录
linux·运维·服务器·数据库·spring·中间件·个人开发
dLYG DUMS15 小时前
DBeaver连接本地MySQL、创建数据库表的基础操作
数据库·mysql
苍煜16 小时前
MySQL分库分表和ES到底怎么选?
数据库·mysql·elasticsearch
茉莉玫瑰花茶16 小时前
Qt 信号与槽 [ 1 ]
开发语言·数据库·qt
czlczl2002092516 小时前
松散索引扫描/跳跃索引扫描
数据库·mysql·性能优化
星马梦缘18 小时前
数据库作战记录 实验7、8
数据库·sql·oracle
安逸sgr18 小时前
Hermes Agent + Obsidian 打造第二大脑(六):分层记忆系统的设计逻辑——L0/L1/L2/L3 四层记忆详解
数据库·agent·知识库·hermes·hermesagent
苍煜18 小时前
一篇讲懂分库分表:概念、spirngboot实战
数据库·oracle
梦想画家19 小时前
PostgreSQL 物化视图实战:从数据固化到智能刷新的全链路指南
数据库·postgresql·物化视图
weoptions19 小时前
简单sql注入中如何通过简单语句判断注入类型&注入方法
数据库·sql