När du sitter i `psql` och behöver hitta rätt databas är kommandot oftast bara två tecken långt: `\l`. Det visar databaserna på servern, men en rad i listan betyder inte automatiskt att ditt konto kan ansluta till databasen.

Snabbaste vägen är \l i psql
- I psql: kör
\leller\listför att visa databaser. - I terminalen: kör
psql -lför att lista och avsluta. - I en SQL-editor: fråga systemkatalogen
pg_database; psql-kommandon med omvänt snedstreck fungerar inte där. - För användardatabaser: filtrera bort mallar med
WHERE datistemplate = false. - Om en databas saknas: kontrollera server, port och anslutningsuppgifter innan du antar att databasen är raderad.
Välj kommando efter var du kör det
Står prompten i psql? Skriv \l och tryck Enter. Resultatet innehåller normalt namn, ägare, teckenkod och åtkomstinformation, så du får mer än en ren namnlista.
Kommandot börjar med ett omvänt snedstreck eftersom det är ett psql-meta-kommando, alltså ett kommando som tolkas av klientprogrammet och inte skickas som vanlig SQL till servern. Därför fungerar \l inte i exempelvis en applikations SQL-editor.
Vill du få listan från terminalen utan att stanna kvar i interaktivt läge, använd psql -l. PostgreSQL-dokumentationen beskriver psql:s listalternativ som ett sätt att visa tillgängliga databaser och sedan avsluta.
SQL-frågan fungerar även i en vanlig frågeeditor
I ett GUI-verktyg eller i kod använder du vanlig SQL mot systemkatalogen pg_database. En minimal fråga ser ut så här:
SELECT datname
FROM pg_database
ORDER BY datname;Vill du slippa mall-databaser i resultatet, lägg till villkoret WHERE datistemplate = false. Det är användbart när du inventerar programmets egna databaser, men behåll mallarna om uppgiften är att granska allt som finns i klustret. Katalogen delas av klustrets databaser, vilket gör den lämplig för den här typen av översikt.
SELECT datname
FROM pg_database
WHERE datistemplate = false
ORDER BY datname;Jag tycker att det är bäst att använda \l för en snabb manuell kontroll och SQL-frågan när resultatet ska filtreras eller användas vidare. PostgreSQL beskriver kolumnerna, bland annat datname och datistemplate, i dokumentationen om systemkatalogen pg_database.
Mall-databaser är inte nödvändigtvis dina projekt
En lista kan innehålla databaser som template0 och template1. De har en funktion som mallar när nya databaser skapas, så deras närvaro betyder inte att ett projekt har råkat skapa extra databaser.
Fältet datistemplate talar om huruvida en databas är markerad som mall. Filtreringen ovan ger därför en mer relevant lista när frågan är ”vilka databaser hör till mina appar?”, medan den fullständiga listan passar bättre vid serveradministration.
En viktig skillnad: synlighet och anslutningsrätt är olika saker. Du kan se en databas i katalogen utan att ha behörighet att ansluta till den. PostgreSQLs funktion has_database_privilege kan kontrollera exempelvis CONNECT, vilket förklaras i dokumentationen om informationsfunktioner och behörighetskontroller.
En saknad databas pekar ofta på fel server eller port
Om databasen du väntar dig inte syns, börja med anslutningen innan du felsöker själva databasen. Ett vanligt misstag är att kontrollera rätt databasnamn mot fel instans, till exempel en lokal server i stället för en molnserver eller en annan port.
| Situation | Trolig orsak | Nästa steg |
|---|---|---|
| Listan saknar databasen du väntar dig | Klienten är ansluten till en annan server, port eller miljö | Kontrollera värdnamn, port och användare i anslutningen |
| Databasen syns, men anslutningen nekas | Kontot saknar CONNECT-behörighet eller anslutning blockeras av serverregler |
Be administratören kontrollera behörighet och serverns anslutningsregler |
\l ger syntaxfel i SQL-editorn |
Meta-kommandot körs utanför psql |
Kör SQL-frågan mot pg_database i stället |
Kommandot psql hittas inte |
Klienten saknas eller finns inte i systemets sökväg | Öppna PostgreSQL:s installerade SQL-skal eller konfigurera sökvägen till klienten |
Den här kontrollen skiljer mellan två problem som lätt blandas ihop: databasen kan finnas men vara otillgänglig för ditt konto, eller så kan klienten visa ett helt annat kluster. Om listan verkar fel är det därför ofta mer träffsäkert att verifiera anslutningsmålet än att direkt ändra databasinställningar.
Håll kommandot enkelt tills du vet vad listan ska användas till
För en snabb kontroll räcker \l. För ett skript eller en SQL-editor passar frågan mot pg_database, och ett filter på datistemplate gör listan mer lättläst när mallarna inte är relevanta.
Om du ser databasen men inte kan öppna den, felsök behörighet separat från listningen. Det sparar tid och minskar risken att behandla ett anslutningsproblem som om databasen saknades.