wp-cli 0.14.1 Kesalahan MySQL

8

Saya baru saja memperbarui ke wp-cli 0.14.1 hari ini dan sekali lagi mengalami masalah MySQL. Saya di Windows, Wampserver, dan Cygwin.

Ketika saya pertama kali memperbarui ke rev terakhir (0.14.0) saya punya masalah yang sama dan akhirnya menemukan dan menggunakan info dari diskusi github yang kemungkinan besar disebabkan oleh "variable_order" di php.ini. Saya berkomentar di file ini untuk memaksakan default EGPCS daripada GPCS. Itu merawatnya. Ada yang menyebutkan memperbaiki ini di rilis berikutnya.

Sekarang saya telah memperbarui ke 0.14.1 dan ketika mencoba menjalankan "wp core config ...." untuk membuat file wp-config.php saya mendapatkan kesalahan baris perintah

MYSQL_PWD is not recognized as an internal or external command.

Saya kembali ke thread github dan melihat bahwa scribu membuat perubahan dibahas. Saya mengikuti tautan ke sana untuk melihat apakah itu akan menjelaskan. Saya melihat perubahan pada baris 328 tetapi tidak tahu apa yang harus saya coba sekarang karena perubahan itu tampaknya menjadi penyebab masalah saya.

Hanya FYI: Saya tidak punya masalah menggunakan mysql dari baris perintah DOS atau Cygwin, keduanya merujuk pada executable yang sama dan bekerja dengan benar; tanpa cacat.

Bantuan apa pun akan dihargai.

DIPERBARUI 03/08/2014

CATATAN: (1) Saya tidak ingin memaparkan nama pengguna atau kata sandi karena bersifat sementara dan ini ada di salah satu mesin lokal saya. (2) Anda akan melihat saya menggunakan file phar dalam sesi debug ini. Hal yang persis sama terjadi dengan menggunakan "diinstal" versi "wp" di folder bin.

Berikut adalah sesi debug di PHPStorm di mana saya mulai dengan perintah wp-cli ini:

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_

Breakpoints di utils.php ditetapkan untuk baris 331:

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

yang membuat perintah terakhir diserahkan ke baris 333 untuk dieksekusi:

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

Berikut gambar debug dengan status variabel sebelum memproses baris 334-339 untuk keluar dari wp-cli dan menghasilkan pesan kegagalan pada baris perintah 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
$ 

Saya tahu wp-cli adalah perangkat lunak yang dibangun dengan baik sehingga kemungkinan besar saya melewatkan sesuatu di sepanjang jalan. (Mendapatkan baris perintah dan PHPStorm bekerja bersama memakan waktu karena ini adalah alat baru bagi saya.) Saya akan terus melakukannya sesuai waktu, tetapi jika seseorang memiliki petunjuk itu akan membantu.

UPDATE: 03/29/14

Terima kasih atas tiketnya dan bergabung dengan scribu, tapi sayangnya itu tidak memperbaiki masalah. Saya mendapatkan kesalahan yang sama.

Awalnya saya bingung setelah mengunduh ulang file phar karena saya menemukan kode yang sama persis seperti sebelum tiket Anda dan bergabung. Momen WTF. Jadi saya melihat direktori build di GitHub dan melihat file itu bertanggal 2 hari sebelum penggabungan Anda sehingga tidak akan menyertakan perubahan.

Saya meraih nightly, memuat ulang proyek dan ada perubahan dengan putenv () tetapi Bash melempar kesalahan yang sama seperti sebelumnya.

Tampaknya sejak perubahan ini, wp-cli tidak kompatibel dengan Cygwin.

PEMBARUAN: 04/19/2014

Versi 0.15.0 dirilis pada 4/15 jadi saya menginstalnya dan menjalankan semua perintah di atas. wp-cli bekerja seperti di versi <0.14.1. Saya membandingkan 0.14.1 hingga 0.15.0 dan menemukan yang berikut.

Baris 326-339 dari v0.14.1 berbunyi:

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

Baris 326-342 di v0.15.0 sekarang baca:

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

Ini telah memperbaiki masalah. wp-cli sekarang bekerja kembali dengan Cygwin, setidaknya perintah yang saya gunakan di sini dan beberapa lagi yang mengandalkan melewati titik ini - instalasi.

pengguna1640896
sumber

Jawaban: