Ich lese Oreillys PostgreSQL: Up and Running und im Abschnitt Organisieren Ihrer Datenbank mithilfe von Schemas heißt es, dass search_pathdies 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, publicohne 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_pathvon postgresql.confden 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 usersaber ich kann select * from staging.users.
search_path? Haben Sie versucht, nur die search_pathfür Ihre Verbindung einzustellen?
ANSISQL-Modus eingestellt). (Kommentar hier, da Sie ihn dort nicht sehen würden. Ich werde dies löschen Kommentar später)
select * from users?