Instalei o Drush pela primeira vez (pode ser um erro de configuração) e estou tentando atualizar para a versão principal mais recente do Drupal.
Drush está me dando esse erro - estou em uma caixa OSX.
dev5:clientnamedirectory my.name$ drush pm-update projects drupal-7.25
<h1>Additional uncaught exception thrown while handling exception.</h1>
<h2>Original</h2><p>PDOException: SQLSTATE[HY000] [2002] No such file or directory in drupal_get_installed_schema_version() (line 155 of /Users/my.name/Sites/proface/includes/install.inc).</p>
<h2>Additional</h2>
<p>PDOException: SQLSTATE[HY000] [2002] No such file or directory in system_list() (line 165 of /Users/my.name/Sites/clientnamedirectory/includes/module.inc).</p><hr />
Drush command terminated abnormally due to an unrecoverable error.
Respostas:
Foi assim que eu resolvi no macOS:
Fonte: Trabalhando com Drush no Mamp .
fonte
Na configuração do banco de dados no arquivo settings.php do site Drupal, tente alterar o host para 127.0.0.1 em vez de localhost.
substitua o padrão: 'host' => 'localhost',
com: 'host' => '127.0.0.1',
Eu tive esse erro no OS X XAMPP, mas a solução deve ser aplicada aqui também. Como Clive mencionou, é um problema de conexão do MySQL. Este post tem mais sobre o problema subjacente.
fonte
Explicação
O erro PDOException - 2002 significa que seu drush não pode se conectar ao servidor de banco de dados local do MySQL através do arquivo de soquete (por exemplo
/tmp/mysql.sock
), conforme configurado no seuphp.ini
.Na verdade, isso não está muito relacionado a
drush
si próprio, é sua configuração do PHP e esse erro pode ser reproduzido por:Consertar
Se o seu MySQL funcionar corretamente, verifique se estes dois arquivos:
mysql_config --socket
ou:
mysqladmin variables | grep socket
php -i | grep -w default_socket
ou:
php -r 'phpinfo();' | grep -w default_socket
correspondência e pontos para o mesmo arquivo e ambos existem.
Caso contrário, verifique qual está correto:
Em seguida, corrija o problema usando uma das seguintes soluções:
faça o link simbólico para apontar para o
mysql.sock
soquete unix em funcionamento (para o MAMP, consulte a resposta de Andrew ),por exemplo, se você estiver usando o MAMP, poderá criar um link simbólico para o local padrão:
caminho correto do seu
pdo_mysql.default_socket
,mysql.default_socket
oumysqli.default_socket
no seuphp.ini
especifique
unix_socket
no seusettings.php
na sua$databases
variável, por exemploSolução de problemas
Outros casos extremos podem ser:
Depurar com o XDebug:
echo '<?php xdebug_start_trace("/tmp/foo.log");' > init.php
drush -c init.php ev 'Database::getConnection("default", "default");'
xdebug.show_exception_trace=1
no seuxdebug.ini
sudo dtruss -fn mysqld
, no Linux comstrace
fonte
Estou usando o MAMP Pro e tive esse mesmo problema. A maneira mais fácil que encontrei para corrigi-lo foi adicionar a seguinte linha à sua matriz $ database no arquivo settings.php.
Na íntegra, deve ficar assim:
O erro exato que eu estava recebendo era assim:
Exceção não capturada adicional lançada ao manipular exceção.
Original
PDOException: SQLSTATE [HY000] [2002] Nenhum arquivo ou diretório em drupal_is_denied () (linha 2193 de ...
Adicional
PDOException: SQLSTATE [HY000] [2002] Nenhum arquivo ou diretório em _registry_check_code () (linha 3477 de ...
O comando Drush foi finalizado de forma anormal devido a um erro irrecuperável.
fonte
Resolvi isso com as etapas a seguir, semelhantes às respostas anteriores, mas não iguais.
Adicione um link simbólico:
Encontre o php.ini sendo usado:
Adicione as seguintes configurações ao php.ini:
fonte
Isso ocorre devido a um erro de configuração nas suas configurações PHP / SQL. Em algum lugar, o soquete usado pelo servidor da web e a linha de comando é configurado de maneira diferente. Eu recomendo verificar sua configuração do MySQL para ver qual soquete unix está em uso e, em seguida, verifique se o mesmo valor é usado em todas as configurações e compilações do php.ini.
Se você não conseguir corrigir a configuração, as seguintes etapas deverão funcionar:
Se tudo isso parecer complicado, uma alternativa é alterar o host em setting.php de localhost para 127.0.0.1. Isso tornará o site mais lento, mas para um site de desenvolvimento pode não ser perceptível ou importante. Para um site de produção, você deseja usar o soquete unix e deve resolver a configuração.
fonte
Encontrou uma maneira mais fácil / alternativa de instalar o drush em um Mac:
Instale o homebrew colando-o em um terminal independente
Adicione drush executando o seguinte no mesmo terminal
O status de drush em execução está bom agora.
fonte
Se você estiver trabalhando com a instalação do MySQL.com, basta apontar o PHP no local certo para o
.sock
arquivo.No seu
php.ini
, adicione / corrija estas duas linhas:Para encontrar a localização do seu php.ini (ele ainda pode não existir), use este
Se o
php.ini
arquivo ainda não existir, crie-o.fonte
Concorde com outras respostas que o Drupal não consegue encontrar o soquete mysql. As outras respostas me ajudaram, mas estavam incompletas para a instalação com o serviço oficial Oracle Mysql instalado. Ou seja, o local padrão do arquivo mysql.sock. Então, aqui está uma recapitulação das minhas respostas recomendadas, dependendo do seu caso de uso:
Se estiver usando o mysql como incluído no pacote oficial do MAMP, use a resposta de @Andrew Alexander:
Para o Oracle MYSQL oficial:
fonte
Para uma instalação do MAMP 4, a solução estava verificando "Disponibilizar esta versão na linha de comando".
fonte
Recebi a seguinte mensagem no terminal:
(MAMP PRO + PHP 7)
Resolvi o problema com a ajuda destas instruções
fonte
Eu esqueci que o meu mysql local roda em um número de porta exclusivo, então fiquei confuso por que estava recebendo isso até revisar minha configuração em outro site local.
fonte