首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pg_upgrade:顺序检查失败

pg_upgrade:顺序检查失败
EN

Database Administration用户
提问于 2018-05-22 07:19:17
回答 1查看 217关注 0票数 0

在pg_upgrade之后,一次检查失败。

此SQL将被执行以列出表及其序列。在对这个问题的评论中,它被称为“上面的sql”。

代码语言:javascript
复制
SELECT S.relname, T.relname, C.attname
FROM pg_class AS S,
     pg_depend AS D,
     pg_class AS T,
     pg_attribute AS C,
     pg_tables AS PGT
WHERE S.relkind = 'S'
    AND S.oid = D.objid
    AND D.refobjid = T.oid
    AND D.refobjid = C.attrelid
    AND D.refobjsubid = C.attnum
    AND T.relname = PGT.tablename
ORDER BY S.relname;

来源:https://wiki.postgresql.org/wiki/Fixing_序列

这个检查被用来查看下一个值太低的序列。

这个检查从几年以来每天都在执行,几年后就没有失败过。这是我们第一次使用pg_upgrade而不是dump+restore。

现在我有点紧张,因为一些内部引用被打破了。

auth_user_groups_id_seq的输出中断:

代码语言:javascript
复制
psql -f above.sql| grep auth_user_groups_id_seq
 auth_user_groups_id_seq    | auth_user_groups        | id
 auth_user_groups_id_seq    | modwork_emailsender     | id

第一行是对的,第二行似乎坏了。

modwork_emailsender没有序列auth_user_groups_id_seq

为什么上面的sql会在pg_upgrade之后输出奇怪的值呢?

版本:我们从9.3升级到10.2。

更新

我们找到了一个不同的SQL来获取所有序列:

代码语言:javascript
复制
select s.relname as seq, n.nspname as sch, t.relname as tab, a.attname as col
from pg_class s
  join pg_depend d on d.objid=s.oid and d.classid='pg_class'::regclass and d.refclassid='pg_class'::regclass
  join pg_class t on t.oid=d.refobjid
  join pg_namespace n on n.oid=t.relnamespace
  join pg_attribute a on a.attrelid=t.oid and a.attnum=d.refobjsubid
where s.relkind='S' and d.deptype='a'

来源:https://stackoverflow.com/questions/6941043/get-table-and-column-owning-a-sequence/6945493#6945493

第一个查询返回140行(包括奇怪的结果),第二个返回120行(没有奇怪的结果)。

EN

回答 1

Database Administration用户

发布于 2021-02-23 13:03:05

我们面临着同样的问题。显然,这个问题在10.16版中得到了解决。我测试了10.9,10.13,10.14,10.5,而且都有同样的问题。但有了10.16就没问题了我在新闻稿中没有看到任何关于它的信息。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/207438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档