Maison  >  Article  >  base de données  >  Pourquoi ma connexion PDO échoue-t-elle avec « Aucun fichier ou répertoire de ce type (tentative de connexion via unix:///tmp/mysql.sock) » lors de l'utilisation de « localhost » ?

Pourquoi ma connexion PDO échoue-t-elle avec « Aucun fichier ou répertoire de ce type (tentative de connexion via unix:///tmp/mysql.sock) » lors de l'utilisation de « localhost » ?

DDD
DDDoriginal
2024-11-03 07:38:30952parcourir

Why Does My PDO Connection Fail With

Erreur de connexion PDO : "Aucun fichier ou répertoire de ce type (tentative de connexion via unix:///tmp/mysql.sock)"

Dans cette question, l'utilisateur exprime son inquiétude concernant un problème de connexion à une base de données via PDO, qui fonctionnait auparavant. L'utilisateur est perplexe car il n'a modifié aucun paramètre lié au code ou à la base de données et n'est pas sûr de la racine du problème.

L'extrait de code PHP fourni par l'utilisateur suggère qu'il tente d'établir une connexion TCP/IP. à une base de données en utilisant un nom d'hôte de "localhost". Cependant, le message d'erreur indique plutôt une tentative de connexion via un socket Unix.

Solution :

L'utilisateur tente involontairement d'utiliser un socket Unix à cause du PHP gestion par défaut de "localhost" par la bibliothèque cliente. Cette bibliothèque interprète « localhost » comme un emplacement de socket plutôt que comme un hôte TCP.

Pour résoudre cette erreur et établir une connexion TCP/IP à la machine locale, l'utilisateur doit remplacer « 127.0.0.1 » comme nom d'hôte. dans leur code PHP :

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

Si l'intention est d'utiliser un socket Unix, l'utilisateur peut spécifier explicitement son emplacement dans le DSN en utilisant l'option DSN "unix_socket" au lieu de "host". L'emplacement du socket Unix utilisé pour localhost peut être configuré au moment de la compilation ou, dans certaines versions de PHP, en modifiant le paramètre "pdo_mysql.default_socket" dans le fichier php.ini.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn