Navicat 连接 pgsql 报错: 字段“datlastsysoid“不存在LINE 1: SELECT DISTINCT datlastsysoid FROM pg database

问题分析

        Postgres 15 从pg_database表中删除了 datlastsysoid 字段引发此错误。

解决方案

    方法1:升级navicat

    方法2:降级pgsql

    方法3:修改dll

修改dll 操作:

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

        

        2、备份libcc.dll文件,将其复制并粘贴为“libcc.dll.bf”或任何其他名称                    

        3、使用在线工具,  HexEd.it - Browser-based Online and Offline Hex Editing

        4、在文件中搜索“SELECT DISTINCT datlastsysoid”,并将其替换为“SELECT DISTINCT dattablespace”

修改

        5、将另报错,放到 Navicat 安装目录下

        6、重启navicat,可以发现,无论老和新版本的pgsql,都可以正常访问了
 

### PostgreSQL 查询错误解决方案 在 PostgreSQL 版本更新过程中,某些字段可能被移除或更改。对于 `datlastsysoid` 字段,在 Postgres 15 中已被从 `pg_database` 表中删除,这导致了查询语句 `SELECT DISTINCT datlastsysoid FROM pg_database;` 报错提示字段存在[^4]。 针对这一情况,建议采取如下措施: #### 修改客户端配置文件 如果使用的是 Navicat 或其他第三方工具连接到 PostgreSQL 数据库并遇到了这个问题,则可能是由于这些工具内部使用的 SQL 查询包含了已废弃的字段名。此时应考虑联系软件供应商获取最新版本的应用程序,或者尝试手动调整应用程序所依赖的相关 DLL 文件来修正此问题[^2]。 #### 更新驱动程序和库文件 确保正在使用的 JDBC 驱动或其他接口层是最新的稳定版。旧版本可能会存在兼容性问题,特别是当它们试图访问已经被新版本数据库淘汰的数据结构时。官方发布的最新驱动通常会修复这类已知的问题,并提供更好的性能优化和支持更多特性。 #### 替换查询中的过期字段名称 直接编辑有问题的 SQL 脚本,去除对存在的列 `datlastsysoid` 的引用。根据实际需求重新构建合适的查询逻辑。例如可以改为只选择必要的信息而涉及这个特定属性: ```sql -- 更改后的查询示例 SELECT oid, datname FROM pg_database; ``` 通过上述方法之一应该能够有效解决因为缺少 `datlastsysoid` 列而导致的操作失败现象。值得注意的是,最佳实践是保持所有组件处于最新的维护状态以获得最广泛的支持和服务保障。
评论 12
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值