在pg_upgrade之后,一次检查失败。
此SQL将被执行以列出表及其序列。在对这个问题的评论中,它被称为“上面的sql”。
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的输出中断:
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来获取所有序列:
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行(没有奇怪的结果)。
发布于 2021-02-23 13:03:05
我们面临着同样的问题。显然,这个问题在10.16版中得到了解决。我测试了10.9,10.13,10.14,10.5,而且都有同样的问题。但有了10.16就没问题了我在新闻稿中没有看到任何关于它的信息。
https://dba.stackexchange.com/questions/207438
复制相似问题