PDOException SQLSTATE Le fichier ou le répertoire n'existe pas
P粉038161873
2023-08-10 17:44:11
<p> Je crois avoir déployé avec succès mon site Web (très basique) sur Fortrabbit, mais une fois connecté à SSH, exécutez certaines commandes comme <code>php artisan migrate</code> ;/code>), je recevrai un message d'erreur : </p>
<pre class="brush:php;toolbar:false;">[PDOException]
SQLSTATE[HY000] [2002] Aucun fichier ou répertoire de ce type</pre>
<p>À un moment donné, la migration a dû réussir car mes tables existent - mais cela n'explique pas pourquoi cela ne fonctionne pas pour moi maintenant. </p>
L'une des raisons les plus simples de cette erreur est que le serveur MySQL ne fonctionne pas. La première étape consiste donc à vérifier. Si ça marche, voici les autres suggestions :
J'ai eu exactement le même problème. Aucune des solutions ci-dessus n'a fonctionné pour moi. J'ai résolu le problème en changeant le "host" dans le fichier /app/config/database.php de "localhost" à "127.0.0.1".
Je ne sais pas pourquoi "localhost" ne fonctionne pas par défaut, mais j'ai trouvé cette réponse à un problème similaire et elle a été résolue dans un article symfony2. https://stackoverflow.com/a/9251924
Mise à jour : Certaines personnes ont demandé pourquoi ce correctif fonctionnait, j'ai donc fait quelques recherches sur le problème. Comme expliqué dans cet article, ils utilisent différents types de connexion. https://stackoverflow.com/a/9715164
Le problème ici est que "localhost" utilise un socket UNIX et ne trouve pas la base de données dans le répertoire standard. Cependant, "127.0.0.1" utilise TCP (Transmission Control Protocol), ce qui signifie qu'il fonctionne sur le "réseau local" de votre ordinateur et est plus fiable qu'un socket UNIX.
Le message d'erreur indique une tentative d'établissement d'une connexion MySQL sur un socket (qui n'est pas pris en charge).
Dans le contexte de Laravel (artisan), vous souhaiterez peut-être utiliser un environnement différent/correct. Par exemple :
php artisan migrate --env=production
(ou tout autre environnement). Voir ici.