Eu consertei isso alterando a cadeia de conexão, verifique se o mysql está ativado e se todas as tabelas existem no banco de dados.
Touqeer Shafi
Respostas:
12
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 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:
Faça login no seu servidor Magento.
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.
Se você ainda não o fez, configure um phpinfo.phpno seu servidor web.
Compare o valor de Loaded arquivo de configuração do 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 .
Eu recebo o mesmo erro "SQLSTATE [HY000] [2002] Esse arquivo ou diretório não existe". E descobriu que o serviço MySQL estava parado. Comecei meu serviço MySQL e está funcionando bem.
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 .
fonte
Se o seu servidor listado
app/etc/local.xml
estiver emlocalhost
e esse erro aparecer no log de erros do Magento, mas o Magento ainda estiver funcionando, o mysql foi reiniciado e o soquete/tmp/mysql.sock
ou qualquer arquivo de soquete configuradomy.cnf
temporariamente 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.
fonte
defina o nome do host do banco de dados como 127.0.0.1 em vez de localhost.
fonte
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
fonte
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
fonte
Certifique-se de editar seu aplicativo / etc / local.xml corretamente. Se você não possui prefixos para suas tabelas, verifique se a linha correta é:
NÃO
fonte
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.sock
pode 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:
Isso determina as configurações usadas pela CLI (interface da linha de comandos) do PHP. Observe onde
php.ini
está localizado.phpinfo.php
no seu servidor web.phpinfo.php
com o dephp -i
.phpinfo.php
mostra ophp.ini
arquivo usado pelo seu servidor web. Se for diferente do que está no PHPphp.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.
fonte
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 .
Para ver onde seu servidor mysql possui seu soquete, use este comando:
No meu caso, com o Percona Mysql instalado no meu sistema vagrant, o arquivo de soquete de meia estava aqui:
(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
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 .
fonte
Eu recebo o mesmo erro "SQLSTATE [HY000] [2002] Esse arquivo ou diretório não existe". E descobriu que o serviço MySQL estava parado. Comecei meu serviço MySQL e está funcionando bem.
fonte
Parece estar com problema de versão PHP errado, você precisa selecionar qual php deve ser usado para executar o comando da seguinte maneira:
PS: A amostra acima é para MAC, você pode fazê-lo de maneira semelhante para Windows ou Unix também.
fonte