wp-cli 0.14.1 Errore MySQL


8

Ho appena aggiornato a wp-cli 0.14.1 oggi e ancora una volta ho un problema con MySQL. Sono su Windows, Wampserver e Cygwin.

Quando ho aggiornato per la prima volta all'ultimo rev (0.14.0) ho avuto un problema simile e ho finito per trovare e usare le informazioni da una discussione github che molto probabilmente era dovuto al "variabile_ordine" in php.ini. L'ho commentato nel mio file ini per forzare il default di EGPCS invece di GPCS. Questo se ne è occupato. Si è parlato di risolvere questo problema nella prossima versione.

Ora ho aggiornato a 0.14.1 e quando provo a eseguire "wp core config ...." per creare il file wp-config.php sto ottenendo l'errore dalla riga di comando

MYSQL_PWD is not recognized as an internal or external command.

Sono tornato al thread di github e ho visto che scribu ha fatto il cambiamento discusso. Ho seguito il link per vedere se avrebbe fatto luce. Vedo il cambiamento sulla linea 328 ma non so cosa dovrei provare ora poiché quel cambiamento sembra essere ciò che sta producendo il mio problema.

Cordiali saluti: non ho problemi ad usare mysql dalla riga di comando DOS o Cygwin, entrambi fanno riferimento allo stesso eseguibile e funzionano correttamente; senza problemi.

Qualsiasi aiuto sarebbe apprezzato.

AGGIORNATO IL 03/08/2014

NOTE: (1) Non mi preoccupo di esporre il nome utente o la password in quanto sono temporanei e questo è su una delle mie macchine locali. (2) Vedrai che "sto usando il file phar in questa sessione di debug. La stessa cosa accade esattamente usando la versione" installata "" wp "nella cartella bin.

Ecco una sessione di debug in PHPStorm in cui ho iniziato con questo 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_

I punti di interruzione in utils.php sono stati impostati per la linea 331:

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

che crea il comando finale passato alla linea 333 per l'esecuzione:

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

Ecco l' immagine di debug con lo stato delle variabili appena prima di elaborare le righe 334-339 per uscire da wp-cli e produrre il messaggio di errore sulla riga di 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
$ 

So che wp-cli è un software ben costruito, quindi è molto probabile che manchi qualcosa lungo la strada. (Far lavorare insieme la riga di comando e PHPStorm è stato dispendioso in quanto è un nuovo strumento per me.) Lo terrò quando il tempo lo permetterà, ma se qualcuno ha qualche indizio sarebbe d'aiuto.

AGGIORNAMENTO: 29/03/14

Grazie per il biglietto e unisci scribu, ma purtroppo non risolve il problema. Ricevo lo stesso errore.

All'inizio ero confuso dopo aver scaricato di nuovo il file phar perché ho trovato lo stesso codice di prima del tuo ticket e uniscilo. Un momento WTF. Quindi ho guardato la directory builds su GitHub e ho visto che il file è datato 2 giorni prima della tua unione, quindi non avrebbe incluso le modifiche.

Ho preso la sera, ricaricato il progetto e ci sono stati i cambiamenti con putenv () ma Bash sta lanciando lo stesso errore di prima.

Sembra che da quando questa modifica wp-cli è stata incompatibile con Cygwin.

AGGIORNAMENTO: 19/04/2014

La versione 0.15.0 è stata rilasciata il 4/15, quindi l'ho installata ed eseguito tutti i comandi sopra. wp-cli ha funzionato come nelle versioni <0.14.1. Ho confrontato 0.14.1 a 0.15.0 e ho trovato quanto segue.

Le righe 326-339 di v0.14.1 recitano:

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 );

Le righe 326-342 in v0.15.0 ora leggono:

$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 );

Questo ha risolto il problema. wp-cli ora sta funzionando di nuovo con Cygwin, almeno i comandi che ho usato qui e alcuni altri che si basavano sul superamento di questo punto: l'installazione.

Risposte:


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.