/etc/services
er kun vejledende, det er en liste over velkendte havne. Det betyder ikke, at der rent faktisk kører noget på den port, eller at den navngivne tjeneste kører på den port.
I PostgreSQL's tilfælde er det typisk at bruge port 5432, hvis den er tilgængelig. Hvis den ikke er det, vil de fleste installatører vælge den næste ledige port, normalt 5433.
Du kan se, hvad der rent faktisk kører ved hjælp af netstat
værktøj (tilgængeligt på OS X, Windows og Linux, med kommandolinjesyntaks, der varierer på tværs af alle tre).
Dette kompliceres yderligere på Mac OS X-systemer af det forfærdelige rod i forskellige PostgreSQL-pakker - Apples gamle version af PostgreSQL indbygget i OS, Postgres.app, Homebrew, Macports, EnterpriseDB-installationsprogrammet osv. osv.
Det, der ender med at ske, er, at brugeren installerer Pg og starter en server fra én pakke, men bruger psql
og libpq
klient fra en anden emballage. Dette sker typisk, når de kører Postgres.app eller homebrew Pg og forbinder med psql
der blev leveret med OS. Ikke alene har disse nogle gange forskellige standardporte, men den side, der blev leveret med Mac OS X, har en anden standard unix-socketsti , så selvom serveren kører på den samme port, vil den ikke lytte til den samme unix-socket.
De fleste Mac-brugere løser dette ved blot at bruge tcp/ip med psql -h localhost
. Du kan også angive en port, hvis det kræves, f.eks. psql -h localhost -p 5433
. Du kan have flere PostgreSQL-forekomster kørende, så sørg for at du opretter forbindelse til den rigtige ved at bruge select version()
og SHOW data_directory;
.
Du kan også angive en unix-socket-mappe; tjek unix_socket_directories
indstilling af den PostgreSQL-instans, du ønsker at oprette forbindelse til, og specificer den med psql -h
, f.eks.psql -h /tmp
.
En renere løsning er at rette dit system PATH
så psql
og libpq
forbundet med den PostgreSQL, du faktisk kører, er det, der først findes på PATH
. Detaljerne herom afhænger af din Mac OS X-version og hvilke Pg-pakker du har installeret. Jeg bruger ikke Mac og kan ikke tilbyde meget flere detaljer på den side uden at bruge mere tid, end der er tilgængeligt i øjeblikket.