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

相关推荐
10mAh12 小时前
【Git】误删分支、reset --hard 后提交丢了怎么办?——reflog、fsck 与安全恢复实战
数据库·git·安全·回归
J_bean12 小时前
剖析 MySQL InnoDB 共享行锁 (S) & 排他行锁 (X)
数据库·mysql·共享行锁·s lock·排他行锁·x lock
Lumistory12 小时前
城市景观亮化设施维护管养的核心痛点与标准化解决方案
数据库·光照贴图
倒流时光三十年12 小时前
第六阶段 57 · ES|QL 与 SQL API(用 SQL 查 ES)
数据库·sql·elasticsearch
努力进修13 小时前
“数据心脏” 驱动能源自主:国产数据库支撑 Cemsol 实现固井全流程数字化闭环
数据库·人工智能·能源
vHelios13 小时前
SQL不会写?不会找关联表?复杂SQL语句编写逻辑实现思路请查收✉
数据库·sql
DB哥讲数据库13 小时前
【ClickHouse安装教程】从零开始部署高性能列式数据库(附ClickHouse安装包)
数据库·clickhouse
TDengine (老段)14 小时前
TDengine 第三方工具 — Telegraf、Kafka Connect、Flink、Spark
大数据·数据库·物联网·flink·kafka·时序数据库·tdengine
小白勇闯网安圈1 天前
Django 响应对象、文件上传与类视图
数据库·django·sqlite
努力的小雨1 天前
同一份 SQL 跑多套环境:Ksql 变量怎么用才安全
数据库