Ich habe postgresql unter OSX installiert. Wenn ich psql starte, bekomme ich
$ psql
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5433"?
Jedoch von / etc / services
postgresql 5432/udp # PostgreSQL Database
postgresql 5432/tcp # PostgreSQL Database
# Tom Lane <tgl@sss.pgh.pa.us>
pyrrho 5433/tcp # Pyrrho DBMS
pyrrho 5433/udp # Pyrrho DBMS
5433 ist von Pyrrho besetzt, 5432 ist pg zugeordnet. Ich kann mich mit verbinden
psql -p 5432
aber warum glaubt psql, dass es 5433 ist und wie lasse ich psql standardmäßig an der richtigen Stelle aussehen?
postgresql
port
psql
grosse Bandbreite
quelle
quelle
PGPORT
ist: postgresql.org/docs/current/static/libpq-envars.htmlAntworten:
/etc/services
ist nur eine Empfehlung, es ist eine Auflistung bekannter Häfen. Dies bedeutet nicht, dass tatsächlich etwas auf diesem Port ausgeführt wird oder dass der genannte Dienst auf diesem Port ausgeführt wird.Im Fall von PostgreSQL ist es typisch, Port 5432 zu verwenden, wenn dieser verfügbar ist. Ist dies nicht der Fall, wählen die meisten Installateure den nächsten freien Port, normalerweise 5433.
Mit dem
netstat
Tool können Sie sehen, was tatsächlich ausgeführt wird (verfügbar unter OS X, Windows und Linux, wobei die Befehlszeilensyntax in allen drei Bereichen variiert).Dies wird auf Mac OS X-Systemen durch das schreckliche Durcheinander verschiedener PostgreSQL-Pakete noch komplizierter - Apples alte Version von PostgreSQL, die in das Betriebssystem, Postgres.app, Homebrew, Macports, das EnterpriseDB-Installationsprogramm usw. integriert ist.
Am Ende installiert der Benutzer Pg und startet einen Server aus einer Verpackung, verwendet jedoch den
psql
und denlibpq
Client aus einer anderen Verpackung. In der Regel tritt dies auf, wenn sie Postgres.app oder Homebrew Pg ausführen und eine Verbindung mit dempsql
mit dem Betriebssystem gelieferten herstellen. Diese haben nicht nur manchmal unterschiedliche Standardports, sondern die mit Mac OS X gelieferte Pg hat auch einen anderen Standard-Unix-Socket-Pfad . Selbst wenn der Server auf demselben Port ausgeführt wird, hört er nicht denselben Unix-Socket ab.Die meisten Mac-Benutzer umgehen dies, indem sie nur tcp / ip mit verwenden
psql -h localhost
. Bei Bedarf können Sie auch einen Port angeben, zpsql -h localhost -p 5433
. Möglicherweise werden mehrere PostgreSQL-Instanzen ausgeführt. Stellen Sie daher sicher, dass Sie mitselect version()
und eine Verbindung zur richtigen herstellenSHOW data_directory;
.Sie können auch ein Unix-Socket-Verzeichnis angeben. Überprüfen Sie die
unix_socket_directories
Einstellung der PostgreSQL-Instanz, zu der Sie eine Verbindung herstellen möchten, und geben Sie diese mitpsql -h
zpsql -h /tmp
.Eine sauberere Lösung besteht darin, Ihr System
PATH
so zu korrigieren, dass daspsql
undlibpq
das mit dem PostgreSQL verknüpfte System , das Sie tatsächlich ausführen, das ist, was zuerst auf dem System gefunden wirdPATH
. Die Details dazu hängen von Ihrer Mac OS X-Version und den von Ihnen installierten Pg-Paketen ab. Ich benutze keinen Mac und kann auf dieser Seite nicht viel mehr Details anbieten, ohne mehr Zeit als derzeit verfügbar zu verbringen.quelle
Schnelle Antwort unter OSX, legen Sie Ihre Umgebungsvariablen fest.
Oder was auch immer Sie brauchen.
quelle
Der Standardport von Postgres wird normalerweise konfiguriert in:
Unter Ubuntu könnte dies sein:
Suchen Sie
port
in dieser Datei nach.quelle
~/PostgreSQL/data/pg96
Dank @a_horse_with_no_name ‚s Kommentar , änderte ich meine PGPORT Definition zu 5432 in pg_env.sh. Das hat das Problem für mich behoben. Ich weiß nicht, warum Postgres es ursprünglich als 5433 festgelegt hat, als es den Dienst bei 5432 hostete.
quelle
Es scheint, dass einer der häufigsten Gründe dafür ist, dass Sie eine neue Version von PostgreSQL installieren, ohne den Dienst einer vorhandenen Installation zu beenden. Dies war auch ein besonderer Kopfschmerz von mir. Überprüfen Sie vor der Installation oder Aktualisierung, insbesondere unter OS X und der Verwendung des Ein-Klick-Installationsprogramms von Enterprise DB, den Status der alten Installation, bevor Sie fortfahren.
quelle
Ich bin auch auf dieses Problem gestoßen, und es endete damit, dass zwei Postgres-Server gleichzeitig ausgeführt wurden. Ich habe einen von ihnen deinstalliert und den Port wieder auf 5432 geändert und funktioniert jetzt einwandfrei.
quelle
Für mich in PgAdmin 4 unter Mac OS High Sierra wurde durch Klicken auf die PostrgreSQL10- Datenbank unter Server in der linken Spalte und dann auf die Registerkarte Eigenschaften 5433 als Port unter Verbindung angezeigt . (Ich weiß nicht warum, weil ich während der Installation 5432 gewählt habe). Wie auch immer, ich habe auf das Symbol Bearbeiten auf der Registerkarte Eigenschaften geklickt , das in 5432 geändert , gespeichert und das Problem behoben. Stelle dir das vor.
quelle