wp-cli 0.14.1 Ошибка MySQL

8

Я только что обновил до wp-cli 0.14.1 сегодня и снова возникла проблема с MySQL. Я на Windows, Wampserver и Cygwin.

Когда я впервые обновился до последней версии (0.14.0), у меня была похожая проблема, и я обнаружил и использовал информацию из обсуждения на github, которая, скорее всего, была вызвана «variable_order» в php.ini. Я прокомментировал это в своем INI-файле, чтобы заставить EGPCS по умолчанию вместо GPCS. Это позаботилось об этом. Было упоминание об исправлении этого в следующем выпуске.

Теперь я обновился до 0.14.1 и при попытке запустить «wp core config ....» для создания файла wp-config.php я получаю ошибку командной строки

MYSQL_PWD is not recognized as an internal or external command.

Я вернулся к ветке github и увидел, что scribu действительно внес изменения, которые обсуждались. Я перешел по ссылке на него, чтобы посмотреть, не пролил ли он свет. Я вижу изменение в строке 328, но не знаю, что мне следует попробовать сейчас, так как это изменение, похоже, и вызывает мою проблему.

Просто к сведению: у меня нет проблем с использованием mysql из командной строки DOS или Cygwin, они оба ссылаются на один и тот же исполняемый файл и работают правильно; безотказно.

Любая помощь будет оценена.

ОБНОВЛЕНО 08/08/2014

ПРИМЕЧАНИЯ. (1) Меня не интересует раскрытие имени пользователя или пароля, поскольку они являются временными, и это на одной из моих локальных машин. (2) Вы увидите, что я использую файл phar в этом сеансе отладки. То же самое происходит с использованием «установленной» версии «wp» в папке bin.

Вот сеанс отладки в PHPStorm, в котором я начал с этой командой 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_

Точки останова в utils.php были установлены для строки 331:

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

который создает последнюю команду, переданную в строку 333 для выполнения:

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

Вот изображение отладки со статусом переменных непосредственно перед обработкой строк 334-339 для выхода из wp-cli и выдачи сообщения об ошибке в командной строке 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
$ 

Я знаю, что wp-cli - это хорошо сконструированное программное обеспечение, поэтому, скорее всего, я что-то упустил по пути. (Совместная работа командной строки и PHPStorm заняла много времени, так как это новый инструмент для меня.) Я буду придерживаться этого, как только позволит время, но если у кого-то есть какие-то подсказки, это поможет.

ОБНОВЛЕНИЕ: 29.03.14

Спасибо за тикет и объединение scribu, но, к сожалению, это не решает проблему. Я получаю ту же ошибку.

Сначала я был сбит с толку после повторной загрузки файла phar, потому что я нашел тот же код, что и до вашего билета и слияния. Момент WTF. Поэтому я просмотрел каталог builds на GitHub и увидел, что файл датирован за 2 дня до вашего слияния, поэтому он не включил бы изменения.

Я взял ночной пакет, перезагрузил проект, и с помощью putenv () произошли изменения, но Bash выдает ту же ошибку, что и раньше.

Кажется, с тех пор, как это изменение wp-cli было несовместимо с Cygwin.

ОБНОВЛЕНИЕ: 19.04.2014

Версия 0.15.0 была выпущена 4/15, поэтому я установил ее и выполнил все приведенные выше команды. wp-cli работал так же, как и в версиях <0.14.1. Я сравнил 0,14,1 с 0,15,0 и обнаружил следующее.

Строки 326-339 из v0.14.1 гласят:

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

Строки 326-342 в v0.15.0 теперь читаются:

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

Это исправило проблему. Теперь wp-cli снова работает с Cygwin, по крайней мере, с командами, которые я здесь использовал, а также с некоторыми другими, которые основывались на прохождении этого пункта - установкой.

user1640896
источник

Ответы: