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 » ?
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!