Se produjo un error al procesar su solicitud.
SQLSTATE [HY000] [2002] No existe tal archivo o directorio
Obteniendo el error anterior, por favor alguien me brinde una solución para resolver esto.
Se produjo un error al procesar su solicitud.
SQLSTATE [HY000] [2002] No existe tal archivo o directorio
Obteniendo el error anterior, por favor alguien me brinde una solución para resolver esto.
Respuestas:
Si su servidor en la lista app/etc/local.xml
es localhost
y este error aparece en el registro de errores de Magento, pero Magento todavía se está ejecutando bien, entonces mysql se reinició y el socket /tmp/mysql.sock
o cualquier archivo de socket configurado my.cnf
temporalmente desapareció.
Debido a que falta, el conector PDO mysql informa SQLSTATE[HY000] [2002] No such file or directory
Si recibe continuamente este error y no tiene acceso a Magento aparte de la página Error de excepción, entonces mysql se ha bloqueado por completo y necesita su proveedor de alojamiento para averiguar por qué y reiniciar mysql.
Esto también puede suceder si su sistema de archivos está lleno ... df -h 1er ... por supuesto, la mayoría de las veces debería recibir alertas antes de eso ...
mysqld no se ejecutará normalmente y estaría en modo "seguro"
HTH SNS
Tuve este mismo problema, y usé a continuación para seleccionar qué php tengo que usar. /usr/local/etc/php/7.2/bin/php bin/magento setup:di:compile
Ver documentos oficiales: SQLSTATE [HY000] [2002] No existe tal archivo o directorio
Esto es comúnmente causado por una instancia diferente de PHP utilizada por la línea de comando PHP en comparación con el servidor web. En particular, mysql.sock
podría estar mal configurado si este es el caso.
Para determinar si está utilizando o no una instancia de PHP:
Ingrese el siguiente comando:
php -i | grep 'php.ini'
Esto determina la configuración utilizada por la interfaz de línea de comandos (CLI) de PHP. Tenga en cuenta dónde php.ini
se encuentra.
phpinfo.php
en su servidor web.phpinfo.php
con el de php -i
.phpinfo.php
muestra el php.ini
archivo utilizado por su servidor web. Si es diferente de lo que hay en PHP php.ini
, debe hacer que todas las configuraciones de PHP sean consistentes tanto para la CLI de PHP como para el servidor web.
Para detalles adicionales, consulte la documentación provista con su servidor web.
Tengo varias versiones de PHP disponibles para mí a través del shell: al escribir php y presionar la tecla, se muestran cuáles conoce mi autocompletado.
Para mí, PHP 5.4, 5.5 y 5.6 funcionaban bien, pero PHP 7 no estaba encontrando el mysql.sock, y se estaba bloqueando con el "SQLSTATE [HY000] [2002] No hay tal archivo o error de directorio" discutido en esta pregunta .
# 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
Para ver dónde tiene su servidor mysql, use este comando:
cat /etc/mysql/my.cnf | grep socket
En mi caso, con Percona Mysql instalado en mi sistema vagabundo, el archivo de socket de calcetín vivió aquí:
/var/run/mysqld/mysqld.sock
(tenga en cuenta que se llama mysqld no simplemente mysql )
Tengo varias versiones de php para elegir y estos comandos me mostraron cuáles tenían problemas y cuáles estaban bien:
La respuesta para mí fue simplemente incluir código en el script de aprovisionamiento vagabundo para crear un enlace simbólico entre /tmp/mysql.sock y /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
Con el nuevo enlace simbólico en su lugar, el script de prueba proporcionado anteriormente funciona perfectamente para todas las versiones de PHP y puedo usar localhost en mi código en lugar de tener que dar la dirección IP 127.0.0.1 .
Esto parece ser un problema de versión de PHP incorrecto, debe seleccionar qué php debe usar para ejecutar el comando de la siguiente manera:
/Applications/MAMP/bin/php/php7.1.20/bin/php bin/magento setup:upgrade
PD: el ejemplo anterior es para MAC, también puede hacerlo de manera similar para Windows o Unix.