Heim  >  Artikel  >  Datenbank  >  Warum schlägt meine PDO-Verbindung mit „Keine solche Datei oder kein solches Verzeichnis (Versuch, eine Verbindung über unix:///tmp/mysql.sock herzustellen)“ fehl, wenn ich „localhost“ verwende?

Warum schlägt meine PDO-Verbindung mit „Keine solche Datei oder kein solches Verzeichnis (Versuch, eine Verbindung über unix:///tmp/mysql.sock herzustellen)“ fehl, wenn ich „localhost“ verwende?

DDD
DDDOriginal
2024-11-03 07:38:30948Durchsuche

Why Does My PDO Connection Fail With

PDO-Verbindungsfehler: „Keine solche Datei oder kein solches Verzeichnis (versucht, eine Verbindung über unix:///tmp/mysql.sock herzustellen)“

In dieser Frage äußert der Benutzer Bedenken hinsichtlich eines Problems bei der Verbindung zu einer Datenbank über PDO, das zuvor funktionierte. Der Benutzer ist ratlos, weil er keine Einstellungen im Zusammenhang mit dem Code oder der Datenbank geändert hat und sich nicht sicher ist, wo das Problem liegt.

Der vom Benutzer bereitgestellte PHP-Codeausschnitt deutet darauf hin, dass er versucht, eine TCP/IP-Verbindung herzustellen zu einer Datenbank mit dem Hostnamen „localhost“. Die Fehlermeldung weist jedoch darauf hin, dass stattdessen versucht wurde, eine Verbindung über einen Unix-Socket herzustellen.

Lösung:

Der Benutzer versucht aufgrund von PHP unabsichtlich, einen Unix-Socket zu verwenden Standardbehandlung der Clientbibliothek für „localhost“. Diese Bibliothek interpretiert „localhost“ als Socket-Speicherort und nicht als TCP-Host.

Um diesen Fehler zu beheben und eine TCP/IP-Verbindung zum lokalen Computer herzustellen, sollte der Benutzer „127.0.0.1“ als Hostnamen ersetzen in ihrem PHP-Code:

<code class="php">new PDO('mysql:host=127.0.0.1;port=3306;dbname=test', 'username', 'password');</code>

Wenn die Absicht besteht, einen Unix-Socket zu verwenden, kann der Benutzer dessen Speicherort im DSN explizit angeben, indem er die DSN-Option „unix_socket“ anstelle von „host“ verwendet. Der Speicherort des für localhost verwendeten Unix-Sockets kann zur Kompilierungszeit oder in bestimmten PHP-Versionen durch Ändern der Einstellung „pdo_mysql.default_socket“ in der Datei php.ini konfiguriert werden.

Das obige ist der detaillierte Inhalt vonWarum schlägt meine PDO-Verbindung mit „Keine solche Datei oder kein solches Verzeichnis (Versuch, eine Verbindung über unix:///tmp/mysql.sock herzustellen)“ fehl, wenn ich „localhost“ verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn