Instalé Drush por primera vez (por lo que puede ser un error de configuración) y estoy tratando de actualizar a la última versión principal de Drupal.
Drush me está dando este error: estoy en una caja de 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.
Respuestas:
Así fue como lo resolví en macOS:
Fuente: Trabajando con Drush en Mamp .
fuente
En la configuración de su base de datos en el archivo settings.php para el sitio Drupal, intente cambiar el host a 127.0.0.1 en lugar de localhost.
reemplace el valor predeterminado: 'host' => 'localhost',
con: 'host' => '127.0.0.1',
He tenido este error en OS X XAMPP, pero la solución también debería aplicarse aquí. Como mencionó Clive, es un problema de conexión MySQL. Esta publicación tiene más información sobre el problema subyacente.
fuente
Explicación
La PDOException - error 2002 significa que su drush no puede conectarse al servidor de base de datos local MySQL a través del archivo socket (por ejemplo
/tmp/mysql.sock
) como está configurado en suphp.ini
.En realidad, esto no está muy relacionado con
drush
sí mismo, es su configuración de PHP y ese error puede ser reproducido por:Fijar
Si su MySQL funciona correctamente, asegúrese de que estos dos archivos:
mysql_config --socket
o:
mysqladmin variables | grep socket
php -i | grep -w default_socket
o:
php -r 'phpinfo();' | grep -w default_socket
coincide y apunta al mismo archivo y ambos existen.
De lo contrario, verifique cuál es el correcto:
luego solucione el problema con una de las siguientes soluciones:
haga que el enlace simbólico apunte al
mysql.sock
zócalo Unix en funcionamiento (para MAMP, vea la respuesta de Andrew ),por ejemplo, si está usando MAMP, puede hacer un enlace simbólico a la ubicación predeterminada:
camino correcto de su
pdo_mysql.default_socket
,mysql.default_socket
omysqli.default_socket
en suphp.ini
especificar
unix_socket
en susettings.php
en su$databases
variable, por ejemploSolución de problemas
Otros casos extremos podrían ser:
Depurar con 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
en suxdebug.ini
sudo dtruss -fn mysqld
, en Linux constrace
fuente
Estoy usando MAMP Pro y tuve este mismo problema. La manera más fácil que pude encontrar para solucionarlo fue agregar la siguiente línea a su matriz $ database en el archivo settings.php.
En su totalidad debería verse así:
El error exacto que recibía se veía así:
Excepción adicional no capturada lanzada mientras se maneja la excepción.
Original
PDOException: SQLSTATE [HY000] [2002] No existe tal archivo o directorio en drupal_is_denied () (línea 2193 de ...
Adicional
PDOException: SQLSTATE [HY000] [2002] No existe tal archivo o directorio en _registry_check_code () (línea 3477 de ...
El comando Drush finalizó de forma anormal debido a un error irrecuperable.
fuente
Resolví esto con los siguientes pasos, similares a las respuestas anteriores pero no iguales.
Agregar un enlace simbólico:
Encuentra el php.ini que se usa:
Agregue la siguiente configuración a php.ini:
fuente
Esto se debe a un error de configuración en sus configuraciones PHP / SQL. En algún lugar, el socket que usa su servidor web y la línea de comando se configura de manera diferente. Recomiendo verificar su configuración de MySQL para ver qué socket de Unix está en uso, y luego asegurarse de que se use el mismo valor en todas las configuraciones y compilaciones de php.ini.
Si no puede arreglar la configuración, los siguientes pasos deberían funcionar:
Si todo esto parece complicado, una alternativa es cambiar el host en setting.php de localhost a 127.0.0.1. Esto hará que el sitio sea más lento, pero para un sitio de desarrollo puede no ser notable o importante. Para un sitio de producción, desea utilizar el zócalo Unix y debe resolver la configuración.
fuente
Encontré una forma más fácil / alternativa de instalar drush en una Mac:
Instale homebrew pegando esto en una terminal independiente
Luego agregue drush ejecutando lo siguiente desde la misma terminal
Ejecutar estado drush funciona bien ahora.
fuente
Si está trabajando con la instalación de MySQL.com de MySQL, solo necesita apuntar PHP a la ubicación correcta para el
.sock
archivo.En su
php.ini
, agregue / modifique estas dos líneas:Para encontrar la ubicación de su php.ini (puede que todavía no exista), use esto
Si el
php.ini
archivo aún no existe allí, créelo.fuente
De acuerdo con otras respuestas que Drupal no puede encontrar el socket mysql. Las otras respuestas me ayudaron pero estaban incompletas para la instalación con el servicio oficial Oracle Mysql instalado. A saber, la ubicación predeterminada del archivo mysql.sock. Así que aquí hay un resumen de mis respuestas recomendadas dependiendo de su caso de uso:
Si usa mysql como se incluye en el paquete oficial de MAMP, use la respuesta de @Andrew Alexander:
Para el Oracle MYSQL oficial:
fuente
Para una configuración de MAMP 4, la solución estaba marcando "Hacer que esta versión esté disponible en la línea de comandos".
fuente
Recibí el siguiente mensaje en la terminal:
(MAMP PRO + PHP 7)
Resolví el problema con la ayuda de estas instrucciones.
fuente
Olvidé que mi mysql local se ejecuta en un número de puerto único, así que estaba confundido por qué estaba obteniendo esto hasta que revisé mi configuración en otro sitio local.
fuente