我已经按照以下方式donor
在架构中创建了表reference
:
CREATE TABLE reference.donor (
donor_code smallint PRIMARY KEY,
donor_name character varying NOT NULL,
donor_type smallint REFERENCES reference.donor_type (type_id),
alpha_2_code char(2) REFERENCES reference.iso_3166_1 (alpha_2_code)
);
我已经按照以下表格填充了表格:
INSERT INTO reference.donor (donor_code, donor_name, donor_type, alpha_2_code)
SELECT donor_code, donor_name, donor_type, alpha_2_code
FROM reference.donor_template;
当我跑步时:
\dt+ reference.*
在psql里面我看到reference.donor
表格:
List of relations
Schema | Name | Type | Owner | Size | Description
-----------+----------------+-------+----------+-------+-------------
reference | donor | table | postgres | 16 kB |
reference | donor_template | table | postgres | 16 kB |
reference | donor_type | table | postgres | 16 kB |
reference | iso_3166_1 | table | postgres | 48 kB |
(4 rows)
但是当我运行\dt+ donor*
(或\dt(+)
)时,我没有看到该reference.donor
表:
List of relations
Schema | Name | Type | Owner | Size | Description
-----------+----------------+-------+----------+-------+-------------
oecd_cl | donor | table | postgres | 16 kB |
reference | donor_template | table | postgres | 16 kB |
reference | donor_type | table | postgres | 16 kB |
(3 rows)
我为什么只能看到reference.donor
表,如果我跑\dt+ reference.*
还是\dt+ *.donor
?
我原本希望\dt
(或\dt+
)显示它,但事实并非如此。
我search_path
包括该架构reference
,并且该用户postgres
具有对该架构reference
和该架构中所有表的所有权限,具体如下:
GRANT ALL ON ALL TABLES IN SCHEMA reference TO postgres;
为了澄清起见,我有两个donor
表,但是它们处于两个不同的模式,即oecd.donor
&reference.donor
。(我在psql中oecd.donor
使用时可以看到没有任何问题\dt(+)
)。
search_path
而不管哪个模式放在最前面,而我却事先不知道表/模式名称?还是我最好查询information schema
例如:SELECT table_schema, table_name FROM information_schema.tables ORDER BY table_schema, table_name;
?