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

时间:2024-10-24 14:03:51

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

作者:神的孩子都在歌唱

我在使用使用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.****.net/asp_netMiss/article/details/137874461

作者:神的孩子都在歌唱

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

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