navicate连接pgsql数据库报错datlastsysoid does not exist

举报
神的孩子在歌唱 发表于 2024/10/24 11:41:19 2024/10/24
【摘要】 前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。作者:神的孩子都在歌唱我在使用使用Navicat Premium 15连接PostgreSQL 16的数据库时,会报错datlastsysoid does not exist,如下:网上上搜了以下,发现是版本不匹配问题, Postgres 15 从pg_database表中删除了 datlastsysoid 字...

前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。

作者:神的孩子都在歌唱


我在使用使用Navicat Premium 15连接PostgreSQL 16的数据库时,会报错datlastsysoid does not exist,如下:

image-20240513140207582

网上上搜了以下,发现是版本不匹配问题, Postgres 15 从pg_database表中删除了 datlastsysoid 字段引发此错误。

解决方法:

  1. 升级navicat

  2. 降级pgsql

  3. 修改navicat的 libcc.dll文件


我选择的方法是修改dll,懒得升级了 。 方案就是 使用16进制编辑器将libcc.dll文件中的"SELECT DISTINCT datlastsysoid"更改为"SELECT DISTINCT dattablespace"

  1. 打开 Navicat 安装目录,找到libcc.dll文件

image-20240923175113572


  1. 然后使用vscode打开,由于这个文件需要16进制编译器打开,所以下载一个Hex Editor插件

image-20240513140310397

这样子就能打开编辑dll文件了


image-20240513140257465

注意这里得先取消navicate的使用,要不然打不开


  1. 全局查找SELECT DISTINCT datlastsysoid

image-20240513140955892

  1. 将“SELECT DISTINCT datlastsysoid”,替换为“SELECT DISTINCT dattablespace”,替换完成按ctrl+S保存


image-20240513141109576

  1. 重启navicat,就可以正常访问了



参考文档:

https://www.cnblogs.com/skyvip/p/18141140

https://zhuanlan.zhihu.com/p/659630835

https://blog.csdn.net/asp_netMiss/article/details/137874461


作者:神的孩子都在歌唱

本人博客:https://blog.csdn.net/weixin_46654114

转载说明:务必注明来源,附带本人博客连接。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。