recherche

Maison  >  Questions et réponses  >  le corps du texte

Titre réécrit comme : PDOException Erreur SQLSTATE rencontrée, fichier ou répertoire introuvable

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 migratephp 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.

P粉183077097P粉183077097421 Il y a quelques jours631

répondre à tous(2)je répondrai

  • P粉788765679

    P粉7887656792023-10-11 12:04:03

    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.

    répondre
    0
  • P粉356361722

    P粉3563617222023-10-11 10:29:28

    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.

    répondre
    0
  • Annulerrépondre