wp-cli 0.14.1 error de MySQL

8

Acabo de actualizar a wp-cli 0.14.1 hoy y una vez más tengo un problema con MySQL. Estoy en Windows, Wampserver y Cygwin.

Cuando actualicé por primera vez a la última revisión (0.14.0) tuve un problema similar y terminé encontrando y usando la información de una discusión de github que probablemente se debía al "variables_order" en php.ini. Comenté eso en mi archivo ini para forzar el valor predeterminado de EGPCS en lugar de GPCS. Eso lo cuidó. Hubo mención de arreglar esto en el próximo lanzamiento.

Ahora he actualizado a 0.14.1 y cuando intento ejecutar "wp core config ...." para crear el archivo wp-config.php obtengo el error de línea de comando

MYSQL_PWD is not recognized as an internal or external command.

Regresé al hilo de github y vi que scribu hizo el cambio discutido. Seguí el enlace para ver si arrojaría algo de luz. Veo el cambio en la línea 328, pero no sé qué debería intentar ahora, ya que ese cambio parece ser lo que está produciendo mi problema.

Solo para su información: no tengo ningún problema al usar mysql desde la línea de comandos de DOS o Cygwin, ambos hacen referencia al mismo ejecutable y funcionan correctamente; impecablemente

Cualquier ayuda sería apreciada.

ACTUALIZADO 03/08/2014

NOTAS: (1) No me preocupa exponer el nombre de usuario o la contraseña, ya que son temporales y esto está en una de mis máquinas locales. (2) Verá que estoy usando el archivo phar en esta sesión de depuración. Lo mismo sucede exactamente usando la versión "instalada" "wp" en la carpeta bin.

Aquí hay una sesión de depuración en PHPStorm en la que comencé con este comando wp-cli:

Boss@Bonkers /cygdrive/c/wamp/www/wpsandbox
$ ../wp-cli-0.14.1.phar core config --dbhost=127.0.0.1 --dbname=wpsandbox --dbuser=root --dbpass=Bonkers --dbprefix=sndbx_

Los puntos de interrupción en utils.php se establecieron para la línea 331:

$final_cmd = $cmd . assoc_args_to_str( $assoc_args );

que crea el comando final entregado a la línea 333 para su ejecución:

$proc = proc_open( $final_cmd, $descriptors, $pipes );

Aquí está la imagen de depuración con el estado de las variables justo antes de procesar las líneas 334-339 para salir de wp-cli y generar el mensaje de falla en la línea de comando bash:

Boss@Bonkers /cygdrive/c/wamp/www/wpsandbox
$ ../wp-cli-0.14.1.phar core config --dbhost=127.0.0.1 --dbname=wpsandbox --dbuser=root --dbpass=Bonkers --dbprefix=sndbx_
'MYSQL_PWD' is not recognized as an internal or external command,
operable program or batch file.

Boss@Bonkers /cygdrive/c/wamp/www/wpsandbox
$ 

Sé que wp-cli es un software bien construido, por lo que es muy probable que me falte algo en el camino. (Conseguir que la línea de comando y la PHPStorm trabajen juntas me llevó mucho tiempo, ya que es una herramienta nueva para mí). Lo seguiré según lo permita el tiempo, pero si alguien tiene alguna pista, ayudaría.

ACTUALIZACIÓN: 29/03/14

Gracias por el ticket y la fusión de scribu, pero desafortunadamente no soluciona el problema. Me sale el mismo error.

Al principio estaba confundido después de volver a descargar el archivo phar porque encontré exactamente el mismo código que antes de su boleto y la fusión. Un momento WTF. Así que miré el directorio de compilaciones en GitHub y vi que el archivo está fechado 2 días antes de su fusión, por lo que no habría incluido los cambios.

Agarré la noche, volví a cargar el proyecto y hubo cambios con putenv (), pero Bash arroja el mismo error que antes.

Parece que desde este cambio wp-cli ha sido incompatible con Cygwin.

ACTUALIZACIÓN: 19/04/2014

La versión 0.15.0 se lanzó el 15/04, así que la instalé y ejecuté todos los comandos anteriores. wp-cli funcionó como lo hizo en las versiones <0.14.1. Comparé 0.14.1 a 0.15.0 y encontré lo siguiente.

Las líneas 326-339 de v0.14.1 leen:

if ( isset( $assoc_args['pass'] ) ) {
    $cmd = esc_cmd( 'MYSQL_PWD=%s ', $assoc_args['pass'] ) . $cmd;
    unset( $assoc_args['pass'] );
}

$final_cmd = $cmd . assoc_args_to_str( $assoc_args );

$proc = proc_open( $final_cmd, $descriptors, $pipes );
if ( !$proc )
    exit(1);

$r = proc_close( $proc );

if ( $r ) exit( $r );

Las líneas 326-342 en v0.15.0 ahora leen:

$pass = $assoc_args['pass'];
unset( $assoc_args['pass'] );

$old_pass = getenv( 'MYSQL_PWD' );
putenv( 'MYSQL_PWD=' . $pass );

$final_cmd = $cmd . assoc_args_to_str( $assoc_args );

$proc = proc_open( $final_cmd, $descriptors, $pipes );
if ( !$proc )
    exit(1);

$r = proc_close( $proc );

putenv( 'MYSQL_PWD=' . $old_pass );

if ( $r ) exit( $r );

Esto ha solucionado el problema. wp-cli ahora está trabajando nuevamente con Cygwin, al menos los comandos que he usado aquí, así como algunos más que confiaron en superar este punto: la instalación.

usuario1640896
fuente

Respuestas: