开发者社区> 问答> 正文

greenplum备份表结构错误求解?报错

今天备份GP一个现场表结构的时候,出现一个新问题,导致表结构无法备份,有没有了解的朋友帮助解答一下或者顺一下思路。

备份语句:pg_dump -s -f xxx_str_20160323.sql xxx

报错日志:pg_dump: Got 0 rows instead of one from: SELECT proretset, prosrc, probin, proallargtypes, proargmodes, proargnames, provolatile, proisstrict, prosecdef, (SELECT lanname FROM pg_catalog.pg_language WHERE oid = prolang) as lanname FROM pg_catalog.pg_proc WHERE oid = '4752124'::pg_catalog.oid

展开
收起
爱吃鱼的程序员 2020-06-09 16:27:31 508 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    这个问题最终我自己解决了,具体的方法如下:

    1.我先用语句查了一下这个id所代表的对象,发现是一个叫inc_tf_ipadd_pool_vol_hour的存储过程导致的:

    2.虽然4752124这个id可以从上图看到,但是用这个id作为条件去查,是查不到结果的;但是正常的对象是可以查到结果的,如下:


    3.所以我考虑到应该是这个对象出问题了,于是我查看了一下这个存储过程,发现有两个同名的存储过程存在与系统中,如下:

    4.我把这俩存储过程删了(其实删一个另一个会自动消失),然后重建了一下。又重新进行导出。但是仍然还会出现那个问题。

    5.于是我又查询了一下第一步,发现那个oid还是存在的,最后我孤注一掷,把这个id删掉,再导出就没问题了。

    deletefrompg_catalog.pg_procwhereoid>4752123andoid<4752125;--这里使用范围删除,是因为用4752124去删除无效,所以只能在界定范围内删除。

    2020-06-09 16:27:48
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
SQL Sever迁移PG经验 立即下载
数据库异地备份及不还原快速查询备份集最佳实践 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载