Ocorreu um erro ao processar sua solicitação
SQLSTATE [HY000] [2002] Esse arquivo ou diretório não existe
Obtendo o erro acima, por favor, alguém me forneça solução para resolver isso.
Ocorreu um erro ao processar sua solicitação
SQLSTATE [HY000] [2002] Esse arquivo ou diretório não existe
Obtendo o erro acima, por favor, alguém me forneça solução para resolver isso.
Respostas:
Eu tive o mesmo problema ao instalar o Magento 2.1.0 com PHP 7.0.13.
Eu poderia resolver esse problema definindo o nome do host do banco de dados como 127.0.0.1 em vez de localhost .
Se o seu servidor listado app/etc/local.xmlestiver em localhoste esse erro aparecer no log de erros do Magento, mas o Magento ainda estiver funcionando, o mysql foi reiniciado e o soquete /tmp/mysql.sockou qualquer arquivo de soquete configurado my.cnftemporariamente desapareceu.
Como está faltando, o conector mysql do PDO relata SQLSTATE[HY000] [2002] No such file or directory
Se você está recebendo esse erro continuamente e não tem acesso ao Magento além da página Erro de exceção, o mysql travou completamente e você precisa do seu provedor de hospedagem para descobrir o porquê e reiniciar o mysql.
Isso também pode acontecer se o sistema de arquivos estiver cheio ...
o mysqld não estará funcionando normalmente e estaria no modo "seguro"
HTH SNS
Eu tive esse mesmo problema e usei abaixo para selecionar qual php deve ser usado. /usr/local/etc/php/7.2/bin/php bin/magento setup:di:compile
Veja documentos oficiais: SQLSTATE [HY000] [2002] Nenhum arquivo ou diretório
Isso geralmente é causado por uma instância diferente do PHP sendo usada pela linha de comando do PHP em comparação ao servidor da web. Em particular, mysql.sockpode ser configurado incorretamente, se este for o caso.
Para determinar se você está usando ou não uma instância do PHP:
Digite o seguinte comando:
php -i | grep 'php.ini'Isso determina as configurações usadas pela CLI (interface da linha de comandos) do PHP. Observe onde php.iniestá localizado.
phpinfo.phpno seu servidor web.phpinfo.phpcom o de php -i.phpinfo.phpmostra o php.iniarquivo usado pelo seu servidor web. Se for diferente do que está no PHP php.ini, você deve tornar todas as configurações de PHP consistentes para a CLI do PHP e o servidor da web.
Para detalhes adicionais, consulte a documentação fornecida com o servidor da web.
Eu tenho várias versões do PHP disponíveis para mim através do shell - digitando php e pressionando tab mostra quais os que meu preenchimento automático conhece.
Para mim, o PHP 5.4, 5.5 e 5.6 estavam funcionando bem, mas o PHP 7 não estava encontrando o mysql.sock e estava travando com o "SQLSTATE [HY000] [2002] Nenhum erro de arquivo ou diretório" discutido nesta pergunta .
# 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 onde seu servidor mysql possui seu soquete, use este comando:
cat /etc/mysql/my.cnf | grep socket
No meu caso, com o Percona Mysql instalado no meu sistema vagrant, o arquivo de soquete de meia estava aqui:
/var/run/mysqld/mysqld.sock
(observe que é chamado mysqld e não simplesmente mysql )
Eu tenho várias versões do php para escolher e esses comandos me mostraram quais tinham problemas e quais eram bons:
A resposta para mim foi simplesmente incluir o código no script do provedor vagrant para criar um link simbólico entre /tmp/mysql.sock e /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
Com o novo link simbólico, o script de teste fornecido anteriormente agora funciona perfeitamente para todas as versões do PHP e eu posso usar o host local no meu código, em vez de precisar fornecer o endereço IP 127.0.0.1 .
Parece estar com problema de versão PHP errado, você precisa selecionar qual php deve ser usado para executar o comando da seguinte maneira:
/Applications/MAMP/bin/php/php7.1.20/bin/php bin/magento setup:upgrade
PS: A amostra acima é para MAC, você pode fazê-lo de maneira semelhante para Windows ou Unix também.