Je crois avoir déployé avec succès mon site (très basique) sur Fortrabbit, mais dès que je me connecte en SSH pour exécuter certaines commandes (comme php artisan migrate
或 php artisan db:seed
) je reçois un message d'erreur :
[PDOException] SQLSTATE[HY000] [2002] No such file or directory
À un moment donné, la migration a dû fonctionner car mes tables sont là - mais cela n'explique pas pourquoi cela ne fonctionne pas pour moi maintenant.
L'une des raisons les plus simples de cette erreur est que le serveur MySQL ne fonctionne pas. Alors vérifiez d'abord. Si c'est démarré, continuez avec 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 "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 dans un problème similaire résolu 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 sujet. Comme mentionné dans cet article, ils semblent utiliser 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 essentiellement qu'il fonctionne sur "l'Internet local" sur votre ordinateur et est beaucoup plus fiable qu'un socket UNIX dans ce cas.
Le message d'erreur indique qu'une connexion MySQL a été tentée via un socket (non 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=product
(ou n’importe quel environnement). Voir ici.