J'ai créé la table donor
dans le schéma reference
selon:
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)
);
J'ai rempli le tableau selon:
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;
Quand je cours:
\dt+ reference.*
à l'intérieur de psql, je vois le reference.donor
tableau:
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)
Mais quand je cours \dt+ donor*
(ou \dt(+)
) je ne vois pas le reference.donor
tableau:
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)
Pourquoi ne puis-je voir le reference.donor
tableau que si je lance \dt+ reference.*
ou \dt+ *.donor
?
Je m'attendais \dt
(ou \dt+
) à l'afficher, mais ce n'est pas le cas.
Mon search_path
inclut le schéma reference
et l'utilisateur postgres
a toutes les autorisations sur le schéma reference
et toutes les tables du schéma selon:
GRANT ALL ON ALL TABLES IN SCHEMA reference TO postgres;
Juste pour clarifier, j'ai deux donor
tableaux, mais ils sont dans deux schémas différents à savoir, oecd.donor
& reference.donor
. (Je peux voir oecd.donor
sans aucun problème lorsque j'utilise l' \dt(+)
intérieur de psql).
la source
search_path
premier et sans que je sache à l'avance les noms des tables / schémas? Ou suis-je mieux de demanderinformation schema
par exemple,:SELECT table_schema, table_name FROM information_schema.tables ORDER BY table_schema, table_name;
?\dt *.*
comme indiqué dans le devis.La première commande fonctionne car toutes les tables répertoriées ont une «référence» dans leur schéma. La deuxième commande fonctionne de la même manière pour «donneur». la relation "reference.iso_3166_1" n'a donc pas de "donneur" dans son nom. si vous souhaitez répertorier iso_3166_1, essayez simplement
réf: http://www.postgresql.org/docs/current/static/app-psql.html#APP-PSQL-PATTERNS
la source
reference | donor
n'est pas répertorié avec la 2e commande.\dt
(ou\dt+
) ne répertorie pas la table reference.donor. Tout va bien selon le tableau reference.iso_3166_1.