【发布时间】:2015-08-11 13:07:57
【问题描述】:
我正在关注plugin test setup/install instructions。我让wp scaffold plugin-tests my-plugin 运行。但是在下一步我尝试运行bash bin/install-wp-tests.sh wordpress_test root '' localhost latest 时,出现以下错误:
mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to MySQL server on 'localhost' (61)'
Check that mysqld is running on localhost and that the port is 3306.
You can check this by doing 'telnet localhost 3306'
我的本地 Wordpress 网站正在运行 MAMP(正在运行)。我不确定这是否与安装脚本相关,因为我认为它正在创建一个临时数据库来运行测试......它使用内置的 OSX mysql 还是 MAMP 的 MySQL 是否重要?
这是wp --info的输出
$ ./vendor/wp-cli/wp-cli/bin/wp --info
PHP binary: /Applications/MAMP/bin/php/php5.6.10/bin/php
PHP version: 5.6.10
php.ini used: /Applications/MAMP/bin/php/php5.6.10/conf/php.ini
WP-CLI root dir: /Applications/MAMP/htdocs/pipeline/wp-content/plugins/wp-github-pipeline/vendor/wp-cli/wp-cli
WP-CLI global config:
WP-CLI project config:
WP-CLI version: 0.19.2
更新 2 我发现最初没有安装 MySQL ......这就是我无法连接的原因!但现在是。我运行了安装脚本,这工作......
$ ./vendor/wp-cli/wp-cli/bin/wp db tables
wp_users
wp_usermeta
wp_posts
wp_comments
wp_links
wp_options
wp_postmeta
wp_terms
wp_term_taxonomy
wp_term_relationships
wp_commentmeta
但是当我运行phpunit 时,我得到了这个:
$ phpunit
PHP Warning: mysqli_real_connect(): (HY000/2002): No such file or directory in /private/tmp/wordpress/wp-includes/wp-db.php on line 1452
PHP Stack trace:
PHP 1. {main}() /private/tmp/wordpress-tests-lib/includes/install.php:0
PHP 2. require_once() /private/tmp/wordpress-tests-lib/includes/install.php:21
PHP 3. require_wp_db() /private/tmp/wordpress/wp-settings.php:79
PHP 4. wpdb->__construct() /private/tmp/wordpress/wp-includes/load.php:350
PHP 5. wpdb->db_connect() /private/tmp/wordpress/wp-includes/wp-db.php:649
PHP 6. mysqli_real_connect() /private/tmp/wordpress/wp-includes/wp-db.php:1452
Warning: mysqli_real_connect(): (HY000/2002): No such file or directory in /private/tmp/wordpress/wp-includes/wp-db.php on line 1452
我的部分问题是我不清楚 wp-cli 是否应该完全在本机 (cli) PHP/Mysql 或 MAMP 的 PHP/Mysql 或两者的某种组合上运行。
更新 4 我很确定最后一个问题是 phpunit 需要安装在 MAMP 中,但我是从 OSX 运行它...
$which phpunit
/usr/bin/phpunit
在this gist中提到。
更新 6
事实证明,您不能再使用 pear 安装 phpunit。所以我将它添加为require-dev下的作曲家依赖,但是当我运行那个版本时,我得到了同样的错误!
$ ./vendor/phpunit/phpunit/phpunit
PHP Warning: mysqli_real_connect(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: NO) in /private/tmp/wordpress/wp-includes/wp-db.php on line 1452
PHP Stack trace:
PHP 1. {main}() /private/tmp/wordpress-tests-lib/includes/install.php:0
PHP 2. require_once() /private/tmp/wordpress-tests-lib/includes/install.php:21
PHP 3. require_wp_db() /private/tmp/wordpress/wp-settings.php:79
PHP 4. wpdb->__construct() /private/tmp/wordpress/wp-includes/load.php:350
PHP 5. wpdb->db_connect() /private/tmp/wordpress/wp-includes/wp-db.php:649
PHP 6. mysqli_real_connect() /private/tmp/wordpress/wp-includes/wp-db.php:1452
Warning: mysqli_real_connect(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: NO) in /private/tmp/wordpress/wp-includes/wp-db.php on line 1452
我什至将它添加到我的路径中以确保...
$ which phpunit
/Applications/MAMP/htdocs/pipeline/wp-content/plugins/wp-github-pipeline/vendor/phpunit/phpunit/phpunit
更新 7
阅读 this 博客文章底部的 cmets 后,我看到安装脚本引用了 mysqladmin 的 OSX 版本。我不确定这是否重要,但我在路径中添加了 MAMP 版本,并重新运行了安装脚本。无论如何,似乎在/tmp/ 中安装了Wordpress 文件。运行phpunit时出现同样的错误
【问题讨论】:
-
默认情况下,mamp runs mysql on port 8889。你改了吗?
telnet localhost 3306的输出是什么? -
@Ploutox 我确实改变了它,所以 MAMP 在标准端口上运行 mysql。我在上面的问题中添加了
telnet的输出。 -
是的,使用哪个
mysql很重要。您是否尝试按照此处所述导出 MAMP 的mysql和mysqladmin? stackoverflow.com/a/29990624/2646526 -
请检查 mysql 是否通过终端运行:
ps aux | grep sql。此外,使用此命令,您可以检查在哪个端口上运行的内容:lsof -i -P | grep -i "listen"。如果 mysql 在正确的端口上运行,您是否有防火墙妨碍您?其他选项,在终端运行mysql -uroot -p命令可以连接mysql吗? -
你能去localhost:3306看看是否下载了一个名为'download'的文件吗?否则你的 mysql 没有在那个端口上运行(或者根本没有运行)。
标签: bash wordpress mamp wp-cli