Lo arreglé cambiando la cadena de conexión, asegúrese de que su mysql esté encendido y que todas las tablas existan en la base de datos.
Touqeer Shafi
Respuestas:
12
Tuve el mismo problema al instalar Magento 2.1.0 con PHP 7.0.13. Podría resolver este problema estableciendo el nombre de host de la base de datos como 127.0.0.1 en lugar de localhost .
Si su servidor en la lista app/etc/local.xmles localhosty 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.socko cualquier archivo de socket configurado my.cnftemporalmente 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"
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.sockpodría estar mal configurado si este es el caso.
Para determinar si está utilizando o no una instancia de PHP:
Inicie sesión en su servidor Magento.
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.inise encuentra.
Si aún no lo ha hecho, configure un phpinfo.phpen su servidor web.
Compare el valor de Loaded Configuration File from phpinfo.phpcon el de php -i.
phpinfo.phpmuestra el php.iniarchivo 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 .
Me sale el mismo error "SQLSTATE [HY000] [2002] No existe tal archivo o directorio". Y descubrió que el servicio MySQL se detuvo. Comencé mi servicio MySQL y está funcionando bien.
Respuestas:
Tuve el mismo problema al instalar Magento 2.1.0 con PHP 7.0.13.
Podría resolver este problema estableciendo el nombre de host de la base de datos como 127.0.0.1 en lugar de localhost .
fuente
Si su servidor en la lista
app/etc/local.xml
eslocalhost
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 configuradomy.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.
fuente
establezca el nombre de host de la base de datos como 127.0.0.1 en lugar de localhost.
fuente
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
fuente
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
fuente
Asegúrese de editar su aplicación / etc / local.xml correctamente. Si no tiene prefijos para sus tablas, asegúrese de que la línea correcta sea:
NO
fuente
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:
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 dephp -i
.phpinfo.php
muestra elphp.ini
archivo utilizado por su servidor web. Si es diferente de lo que hay en PHPphp.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.
fuente
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 .
Para ver dónde tiene su servidor mysql, use este comando:
En mi caso, con Percona Mysql instalado en mi sistema vagabundo, el archivo de socket de calcetín vivió aquí:
(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
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 .
fuente
Me sale el mismo error "SQLSTATE [HY000] [2002] No existe tal archivo o directorio". Y descubrió que el servicio MySQL se detuvo. Comencé mi servicio MySQL y está funcionando bien.
fuente
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:
PD: el ejemplo anterior es para MAC, también puede hacerlo de manera similar para Windows o Unix.
fuente