SQLSTATE [HY000] [2002] Aucune erreur de fichier ou de répertoire de ce type


14

Une erreur s'est produite lors du traitement de votre demande

SQLSTATE [HY000] [2002] Aucun fichier ou répertoire de ce type

Obtenir l'erreur ci-dessus, veuillez me fournir une solution pour résoudre ce problème.


Je l'ai corrigé en changeant la chaîne de connexion, assurez-vous que votre mysql est activé et que toutes les tables existent dans la base de données.
Touqeer Shafi

Réponses:


12

J'ai eu le même problème lors de l'installation de Magento 2.1.0 avec PHP 7.0.13.
J'ai pu résoudre ce problème en définissant le nom d' hôte de la base de données sur 127.0.0.1 au lieu de localhost .


Où cela devrait-il être fait?
joeybab3

inside ./app/etc/env.php
Jino

10

Si votre serveur répertorié dans app/etc/local.xmlest localhostet que cette erreur apparaît dans le journal des erreurs de Magento, mais que Magento fonctionne toujours bien, alors mysql a été redémarré et le socket /tmp/mysql.sockou le fichier socket configuré est my.cnftemporairement disparu.

Parce qu'il manque, le connecteur PDO mysql signale SQLSTATE[HY000] [2002] No such file or directory

Si vous obtenez continuellement cette erreur et que vous n'avez pas accès à Magento en dehors de la page d'erreur d'exception, alors mysql s'est complètement bloqué et vous avez besoin de votre hébergeur pour savoir pourquoi et redémarrer mysql.


6

définissez le nom d'hôte de la base de données sur 127.0.0.1 au lieu de localhost.


2

Cela peut également se produire si votre système de fichiers est plein ... df -h 1er ... bien sûr, la plupart du temps vous devriez recevoir des alertes avant cela ...

mysqld ne fonctionnera pas normalement et serait en mode "sans échec"

HTH SNS



0

Assurez-vous de modifier correctement votre application / etc / local.xml . Si vous n'avez pas de préfixe pour vos tables, assurez-vous que la ligne appropriée est:

<table_prefix><![CDATA[]]></table_prefix>

NE PAS

<table_prefix>{{db_prefix}}</table_prefix>

0

Cela est généralement causé par une instance différente de PHP utilisée par la ligne de commande PHP par rapport au serveur Web. En particulier, mysql.sockpourrait être mal configuré si tel est le cas.

Pour déterminer si vous utilisez ou non une instance de PHP:

  1. Connectez-vous à votre serveur Magento.
  2. Entrez la commande suivante:

    php -i | grep 'php.ini'

Ceci détermine les paramètres utilisés par l'interface de ligne de commande PHP (CLI). Notez où php.inise trouve.

  1. Si vous ne l'avez pas déjà fait, configurez un phpinfo.phpsur votre serveur Web.
  2. Comparez la valeur de Loaded Configuration File from phpinfo.phpavec celle de php -i.

phpinfo.phpaffiche le php.inifichier utilisé par votre serveur Web. S'il est différent de ce qui est dans PHP php.ini, vous devez rendre tous les paramètres PHP cohérents pour la CLI PHP et le serveur Web.

Pour plus de détails, consultez la documentation fournie avec votre serveur Web.


Cela peut arriver - je pense que je suis confronté à cela en ce moment. Mais pourquoi? Des idées spécifiques sur ce qu'il faut archiver dans ces fichiers ini?
VladFr

4
Vous pouvez plutôt fournir une certaine courtoisie à cette page devdocs.magento.com/guides/v2.0/install-gde/trouble/php/…
Shan

0

J'ai plusieurs versions de PHP à ma disposition via le shell - en tapant php et en appuyant sur tab, vous voyez celles que ma saisie semi-automatique connaît.

Pour moi, PHP 5.4, 5.5 et 5.6 fonctionnaient tous bien, mais PHP 7 ne trouvait pas le mysql.sock, et plantait avec le "SQLSTATE [HY000] [2002] Aucune erreur de fichier ou de répertoire de ce type" discutée dans cette question .

# Prints [ok]
echo "<?php print(new mysqli('localhost', 'root', 'root', 'mysql') ? '[ok]' : '[error]').PHP_EOL; ?>" | php-5.6.20

# Prints [error] and shows a warning
echo "<?php print(new mysqli('localhost', 'root', 'root', 'mysql') ? '[ok]' : '[error]').PHP_EOL; ?>" | php-7.0.8

Pour voir où votre serveur mysql a son socket, utilisez cette commande:

cat /etc/mysql/my.cnf | grep socket

Dans mon cas, avec Percona Mysql installé dans mon système vagabond, le fichier de socket de chaussette se trouvait ici:

/var/run/mysqld/mysqld.sock

(notez qu'il s'appelle mysqld et pas simplement mysql )

J'ai plusieurs versions de php à choisir et ces commandes m'ont montré celles qui avaient des problèmes et celles qui allaient bien:

La réponse pour moi était simplement d'inclure du code dans le script du provisionneur vagabond pour créer un lien symbolique entre /tmp/mysql.sock et /var/run/mysqld/mysqld.sock

if [ ! -L /tmp/mysql.sock ]; then
    echo "Creating symbolic link for php 7 to connect to mysql.sock"
    ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock
fi

Avec le nouveau lien symbolique en place, le script de test donné précédemment fonctionne maintenant parfaitement pour toutes les versions de PHP et je peux utiliser localhost dans mon code au lieu d'avoir à donner l' adresse IP 127.0.0.1 .


0

J'obtiens la même erreur "SQLSTATE [HY000] [2002] Aucun fichier ou répertoire de ce type". Et constaté que le service MySQL a été arrêté. J'ai commencé mon service MySQL et son bon fonctionnement.


0

Cela semble être un problème de version PHP incorrect, vous devez sélectionner le php à utiliser pour exécuter la commande comme suit:

/Applications/MAMP/bin/php/php7.1.20/bin/php bin/magento setup:upgrade

PS: l'exemple ci-dessus est pour MAC, vous pouvez le faire de la même manière pour Windows ou Unix.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.