暂无图片
connot open relation with oid xxx
我来答
分享
手机用户5593
2023-12-18
connot open relation with oid xxx

现象描述:发现navicat 的某个schema下视图全没了,查询了pg_class 发现视图还在,但是页面没有显示。查看navicat后台日志,当页面点击【视图】列表的时候,后台会报error:could not open relation with oid xxx,这个xxx在pg_class查不到记录,在文件系统data目录上能找到对应的xxx和xxx.fsm文件。

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
手机用户5593

问题已找到。有人误删除了pg_class的相关记录,导致对应的relation无法访问报错error:could not open relation with oid xxx。navicat的【视图】需要用到pg_get_viewdef函数获取视图的定义,当pg_get_viewdef访问到的视图涉及到在pg_class中被误删除的表就会报count not open relation with oid xxx,进而导致navicat的【视图】列表为空。应涉及到的视图和基表都无法访问,最后的解决方法:通过shell脚本遍历库中的所有视图找出异常视图并drop掉,根据遍历得到的报错的oid在pg_type中找到对应的记录,再到pg_depend删除依赖记录并执行drop type/table,最后重建基表和视图后navicat和业务都恢复正常。

暂无图片 评论
暂无图片 有用 2
打赏 0
暂无图片
Mjwlan
2023-12-19
你们用的版本是正版的嘛?
手机用户5593
题主
2023-12-19
是的,我们生产用的阿里云,开发是自己的服务器加阿里云提供的polardb包,与生产环境同版本。
Mjwlan

根据描述,可能存在一些问题导致Navicat无法正确显示视图列表和访问相关视图对象。以下是一些可能的解决方法:

  1. 数据库元数据同步:尝试在Navicat中执行"刷新"或"同步"操作,以确保数据库元数据与实际数据库状态保持一致。这将帮助Navicat重新获取和更新数据库对象的信息。

  2. 检查连接权限:确保Navicat所使用的数据库连接具有足够的权限来访问和查询相关视图对象。验证连接参数,并确保对该schema下的视图具有适当的权限。

  3. 重启Navicat:尝试退出Navicat并重新启动程序,以确保任何潜在的缓存或临时状态得到清除,从而重新加载数据库对象。

  4. 检查文件系统权限:检查Navicat所连接到的数据库的数据目录是否具有正确的文件系统权限。确保Navicat可以读取和访问相关的数据文件。

  5. 检查数据库完整性:如果数据库中存在损坏或不一致的文件(如xxx和xxx.fsm),可能会导致错误。可以考虑使用PostgreSQL提供的工具(如pg_resetxlog)来修复数据库文件的完整性问题。

暂无图片 评论
暂无图片 有用 5
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
patroni离线安装
回答 2
https://www.modb.pro/db/152388https://patroni.readthedocs.io/en/latest/index.html可以看看
oracle的游标在pg中怎么用啊?%NOTFOUND在pg中用not found不管用
回答 1
已采纳
PostgreSQL游标步骤:1、定义一个游标:declare游标名cursor2、打开一个游标3、从结果集抓取行到游标4、检查是否还有行需要抓取,如果是返回第三步执行抓取,如果不是,执行第五条5、关
postgreSQL 如何实现字段数字自增?
回答 2
可以使用serial创建自增列;主要是基于 PostgreSQL的序列 去实现。
postgreSQL 会自动垃圾回收吗?
回答 1
PostgreSQL会自动进行垃圾回收,但是它不会像其他数据库一样进行定期的垃圾回收。相反,它会在需要时自动进行垃圾回收。这意味着,当您对表进行更改时,PostgreSQL会自动将不再需要的数据块删除
postgresql 如何完整显示text内容?
回答 1
您好,可以补充一下具体写入多少数据不显示,任何截图或者复现的测试都可以。例如下面使用repeat函数插入多大长度的字符不能显示内容:createtablet(idint,infotext);inser
postgreSQL中有部分归档文件损坏,可以忽略这部分文件吗?
回答 1
已采纳
如果是归档了的wal日志,损坏了是没关系的,可以忽略。
表空间使用限制问题
回答 2
给用户QUOTAunlimitedON自己的表空间ODSCCDATA就不会写到其他表空间了。createtablespaceODSCCDATAdatafile'DATA'size5Gautoexten
pg_repack这个插件,有什么作用?
回答 1
已采纳
类似oracle的在线重定义
postgresql :你们业务会大量放在存储过程中吗?
回答 1
已采纳
看开发团队风格,有的喜欢有的不喜欢。
libevent-devel-2.0.21-4.el7.x86_64.rpm,求一个
回答 2
已采纳
上传附件:libevent2.0.214.el7.x8664.rpm