私は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+
My search_path
にはスキーマが含まれておりreference
、ユーザーpostgres
はスキーマに対するすべての権限とスキーマreference
内のすべてのテーブルを持っています:
GRANT ALL ON ALL TABLES IN SCHEMA reference TO postgres;
明確にするために、2つのdonor
テーブルがありますが、それらは2つの異なるスキーマ、つまり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;
ですか?