Navicat Premium连接PostgreSQL 15后无法打开,提示datlastsysoid列不存在
问题场景
环境:Windows 10、PostgreSQL 15、Navicat Premium 15.0.16(已激活)
问题复现步骤:
- 打开「新建连接」对话框(文件->新建连接->PostgreSQL...)
- 填写连接相关信息
- 测试连接(可正常通过)
- 点击「确定」保存连接
- 在连接列表双击该连接
预期结果:正常打开连接
实际结果:弹出错误对话框,提示:
ERROR: column "datlastsysoid" does not exist
LINE 1: SELECT DISTINCT datlastsysoid FROM pg_database
原因分析
PostgreSQL 12及以后版本已移除pg_database表中的datlastsysoid字段,但Navicat Premium 15.0.16版本未适配该架构变更,导致连接后执行的查询语句报错。
解决方案
优先方案:升级Navicat版本
将Navicat Premium升级到15.0.24及以上版本(该版本开始适配PostgreSQL 15),升级后重新建立连接即可解决问题。临时过渡方案(不推荐长期使用)
若暂时无法升级Navicat,可在PostgreSQL中创建视图模拟datlastsysoid字段,执行以下SQL:
CREATE OR REPLACE VIEW pg_database AS SELECT oid, datname, datdba, encoding, datcollate, datctype, datistemplate, datallowconn, datconnlimit, (SELECT oid FROM pg_namespace WHERE nspname = 'pg_catalog') AS datlastsysoid, datfrozenxid, datminmxid, dattablespace, datacl FROM pg_database;
注意:该视图会覆盖系统默认的pg_database视图,可能引发其他兼容性问题,仅作为临时过渡使用。
内容的提问来源于stack exchange,提问作者tedchow
相关产品推荐
相关产品推荐

