目录

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

本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
快来卷java1 小时前
MySQL篇(六)MySQL 分库分表:应对数据增长挑战的有效策略
数据库·mysql·oracle
IT认证通关2 小时前
金仓数据库KCM认证考试介绍【2025年4月更新】
数据库
程序猿阿伟3 小时前
《SQL赋能人工智能:解锁特征工程的隐秘力量》
数据库·人工智能·sql
冰箱里的金鱼4 小时前
MYSQL 存储引擎 和 日志
数据库
Yan-英杰4 小时前
【百日精通JAVA | SQL篇 | 第三篇】 MYSQL增删改查
java·数据库·sql
信徒_4 小时前
Mysql 中的 binlog、redolog、undolog
数据库·mysql
极限实验室5 小时前
代理 Elasticsearch 服务:INFINI Gateway VS Nginx
数据库·搜索引擎
三月七(爱看动漫的程序员)5 小时前
LLM面试题六
数据库·人工智能·gpt·语言模型·自然语言处理·llama·milvus
追光天使5 小时前
Mac 上使用 mysql -u root -p 命令,出现“zsh: command not found: mysql“?
数据库·mysql·macos
高铭杰6 小时前
Citus源码(2)分布式读流程分析与基础概念梳理(shardid、placementid、groupid)
数据库·分布式·postgresql·citus