wp-cli 0.14.1 Ошибка MySQL

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

Когда я впервые обновился до последнего оборота (0.14.0), у меня была аналогичная проблема, и я обнаружил и использовал информацию из github обсуждение , что, скорее всего, было связано с« variables_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, но не знаю, что я должен попробовать, так как это изменение, похоже, создает проблему.

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

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

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

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

Вот сеанс отладки в PHPStorm, в котором я начал с этой команды wp-cli:

[email protected] /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:

[email protected] /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.

[email protected] /cygdrive/c/wamp/www/wpsandbox
$ 

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

ОБНОВЛЕНИЕ: 03/29/14

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

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

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

Кажется, что это изменение wp-cli несовместимо с Cygwin.

ОБНОВЛЕНИЕ: 04/19/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, по крайней мере, с теми командами, которые я использовал здесь, а также несколькими другими, которые полагались на получение этого момента - установка.

8 голосов | спросил user1640896 1 MaramSat, 01 Mar 2014 02:11:45 +04002014-03-01T02:11:45+04:0002 2014, 02:11:45

1 ответ


4

Кажется, что Cygwin не поддерживает встроенные переменные среды, например, Bash.

Открыт билет: https://github.com/wp-cli/сор-кли /вопросы /1086

ответил scribu 25 MarpmTue, 25 Mar 2014 23:39:28 +04002014-03-25T23:39:28+04:0011 2014, 23:39:28

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132