wp-cli 0.14.1 MySQL错误


8

我今天刚刚更新到wp-cli 0.14.1,再次遇到MySQL问题。我在Windows,Wampserver和Cygwin上。

当我第一次更新到上一个修订版(0.14.0)时,我遇到了类似的问题,并且在github讨论中发现并使用了信息,这很可能是由于php.ini中的“ variables_order”所致。我在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行看到了更改,但是不知道我现在应该尝试什么,因为更改似乎正在导致我的问题。

仅供参考:我从DOS或Cygwin命令行使用mysql没问题,它们都引用相同的可执行文件,并且可以正常工作。完美无瑕。

任何帮助,将不胜感激。

2014年3月8日更新

注意:(1)我不关心公开用户名或密码,因为它们是临时的,并且位于我的一台本地计算机上。(2)在此调试会话中,您将看到我正在使用phar文件。使用bin文件夹中的“已安装”版本“ wp”会发生完全相同的情况。

这是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一起工作非常耗时。)我会在时间允许的情况下坚持使用,但是如果有人有任何帮助,它将有所帮助。

更新:03/29/14

感谢您提供票证和合并记录器,但不幸的是,它不能解决问题。我遇到了同样的错误。

起初,我重新下载了phar文件后感到困惑,因为我发现了与票证合并之前完全相同的代码。WTF时刻。因此,我查看了GitHub上的builds目录,发现该文件的日期早于合并的2天,因此它不会包含更改。

我每天晚上都抓着,重新加载了项目,并且putenv()进行了更改,但是Bash抛出了与以前相同的错误。

似乎因为此更改 wp-cli与Cygwin不兼容。

更新:2014年4月19日

0.15.0版本于4/15发行,因此我安装了该版本并运行了上面的所有命令。wp-cli的工作方式与<0.14.1版本相同。我将0.14.1与0.15.0进行了比较,发现了以下内容。

v0.14.1的326-339行显示为:

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

v0.15.0中的326-342行现在显示为:

$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一起使用,至少我在这里使用的命令以及依赖于此的更多命令-安装。

Answers:


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.