Saya telah membuat tabel donor
dalam skema reference
sesuai:
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)
);
Saya telah mengisi tabel sesuai:
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;
Ketika saya menjalankan:
\dt+ reference.*
di dalam psql saya melihat reference.donor
tabel:
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)
Tetapi ketika saya menjalankan \dt+ donor*
(atau \dt(+)
) saya tidak melihat reference.donor
tabel:
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)
Mengapa saya hanya bisa melihat reference.donor
tabel jika saya menjalankan \dt+ reference.*
atau \dt+ *.donor
?
Saya mengharapkan \dt
(atau \dt+
) untuk menampilkannya, tetapi tidak.
Saya search_path
menyertakan skema reference
& pengguna postgres
memiliki semua izin pada skema reference
dan semua tabel dalam skema sesuai:
GRANT ALL ON ALL TABLES IN SCHEMA reference TO postgres;
Hanya untuk mengklarifikasi, saya punya dua donor
tabel, tetapi mereka berada di dua skema yang berbeda yaitu, oecd.donor
& reference.donor
. (Saya bisa melihat oecd.donor
tanpa masalah ketika saya menggunakan \dt(+)
di dalam psql).
sumber
search_path
pertama dan tanpa saya mengetahui tabel / nama skema di muka? Atau apakah saya lebih baik bertanyainformation schema
misalnya ,:SELECT table_schema, table_name FROM information_schema.tables ORDER BY table_schema, table_name;
?\dt *.*
seperti yang diperintahkan dalam kutipan.Perintah pertama berfungsi karena semua tabel yang tercantum memiliki 'referensi' dalam skema mereka. Perintah kedua bekerja sama untuk 'donor'. jadi relasi "reference.iso_3166_1" tidak memiliki 'donor' dalam namanya. jika Anda ingin mencantumkan iso_3166_1 maka coba saja
ref: http://www.postgresql.org/docs/current/static/app-psql.html#APP-PSQL-PATTERNS
sumber
reference | donor
tidak terdaftar dengan perintah ke-2.\dt
(atau\dt+
) tidak mencantumkan tabel reference.donor. Semua baik-baik saja sesuai tabel reference.iso_3166_1.