Ich lese Oreillys PostgreSQL: Up and Running und im Abschnitt Organisieren Ihrer Datenbank mithilfe von Schemas heißt es, dass search_path
dies auf Datenbankebene festgelegt werden kann:
Wenn beispielsweise alle Objekte in Contrib ohne Schemaqualifizierung zugänglich sein sollen, ändern wir unsere Datenbank wie folgt:
ALTER DATABASE mydb SET search_path="$user",public,contrib;
Nachdem ich den obigen Befehl eingegeben habe, kann ich jedoch immer noch nicht auf Tabellen in anderen Schemas verweisen, public
ohne sie zu qualifizieren:
ALTER DATABASE auth SET search_path="$user",public,staging;`
\d users
Gibt:
Did not find any relation named "users".
Aber wenn ich benutze \d staging.users
, funktioniert es.
SHOW search_path;
Gibt:
search_path
----------------
"$user",public
Überschreibt die Standardeinstellung search_path
von postgresql.conf
den Wert pro Datenbank, mit dem festgelegt wurde ALTER DATABASE ... SET search_path
? Wenn dies der Fall ist, wozu dient der Wert pro Datenbank?
select * from users
aber ich kann select * from staging.users
.
search_path
? Haben Sie versucht, nur die search_path
für Ihre Verbindung einzustellen?
ANSI
SQL-Modus eingestellt). (Kommentar hier, da Sie ihn dort nicht sehen würden. Ich werde dies löschen Kommentar später)
select * from users
?