gpt4 book ai didi

在数据库中找不到 PostgreSQL 的表 oid

转载 作者:行者123 更新时间:2023-11-29 13:55:01 25 4
gpt4 key购买 nike

我对 PostgreSQL 的表 oid 有疑问。我创建一个表。 oid 为 24622

(-rw-------- 1 postgres postgres 8192 11 月 29 日 17:45 24622)

同时我还发现了修改过的文件。

(-rw-------- 1 postgres postgres 73728 11 月 29 日 17:45 12741)

(-rw-------- 1 postgres postgres 32768 11 月 29 日 17:45 12744)

(-rw-------- 1 postgres postgres 65536 11 月 29 日 17:45 12764)

(-rw-------- 1 postgres postgres 57344 11 月 29 日 17:45 12767)

但是这些表在同一个数据库中没有找到,没有找到。

ksh2=# select oid,relname from pg_class where oid = '12741';

oid | relname

-----+---------

(0 rows)

我怎样才能找到那些表???(我也改了schema,找了找也没找到)

谢谢。

最佳答案

文件名不一定是correspond with oid :

Note that while a table's filenode often matches its OID, this is not necessarily the case; some operations, like TRUNCATE, REINDEX, CLUSTER and some forms of ALTER TABLE, can change the filenode while preserving the OID.

文件名存储在relfilenode列中:

Name of the on-disk file of this relation; zero means this is a "mapped" relation whose disk file name is determined by low-level state

因此尝试搜索 relfilenode:

select name, relkind from pg_class where relfilenode = 12741;

relkind 列告诉您文件代表什么类型的对象:

r = ordinary table
i = index
S = sequence
v = view
c = composite type
t = TOAST table
f = foreign table

关于在数据库中找不到 PostgreSQL 的表 oid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33981222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com