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.
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.
Réponses:
Si votre serveur répertorié dans app/etc/local.xml
est localhost
et 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.sock
ou le fichier socket configuré est my.cnf
temporairement 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.
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
J'ai eu ce même problème, et j'ai utilisé ci-dessous pour sélectionner le php à utiliser. /usr/local/etc/php/7.2/bin/php bin/magento setup:di:compile
Voir les documents officiels: SQLSTATE [HY000] [2002] Aucun fichier ou répertoire de ce type
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.sock
pourrait être mal configuré si tel est le cas.
Pour déterminer si vous utilisez ou non une instance de PHP:
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.ini
se trouve.
phpinfo.php
sur votre serveur Web.phpinfo.php
avec celle de php -i
.phpinfo.php
affiche le php.ini
fichier 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.
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 .
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.