[英]getting “db: SQLSTATE[HY000] [2002] Connection refused” error on Mac with MAMP
我正在尝试运行这个 PHP 数据库搜索和替换脚本的 CLI 版本,但我认为这是一个与 Mac OS X 和 MAMP 相关的更普遍的 MySQL 问题。 每当我尝试在本地运行 CLI 脚本时,都会收到以下错误:
db: SQLSTATE[HY000] [2002] Connection refused
这是我正在运行的命令:
./srdb.cli.php -h 127.0.0.1 -u root -n mydbname -proot -c utf\-8 -s mywebsite.com -r dev.mywebsite.com
我试过的
mysql -u root -proot
等...我正在使用这个mysql
:/Applications/MAMP/Library/bin/mysql
而这个php
:/Applications/MAMP/bin/php/php5.3.28/bin/php
有人有什么想法吗? 谢谢!
编辑
这是显示脚本如何连接到 MySQL 的源代码: https : //github.com/interconnectit/Search-Replace-DB/blob/master/srdb.cli.php
反过来导入这个:
https://github.com/interconnectit/Search-Replace-DB/blob/master/srdb.class.php
正如我的评论中所述,您可能没有运行您认为正在运行的 PHP 二进制文件。 即使 MAMP php 二进制文件在您的路径中, srdb.cli.php
的 shebang 行srdb.cli.php
读取#!/usr/bin/php
并指向 Apple 提供的 php 二进制文件。
因此,如果您使用 MAMP php 二进制文件的完整路径调用脚本,则应避免该问题:
/Applications/MAMP/bin/php/php5.3.28/bin/php srdb.cli.php -h 127.0.0.1 -u root -n mydbname -proot -c utf\-8 -s mywebsite.com -r dev.mywebsite.com
另一种解决方案可能是将 shebang 行替换为:
#!/usr/bin/env php
仅当 MAMP 二进制文件位于/usr/bin
前面的 $PATH 中时,这才有效。 然而,使用#!/usr/bin/env php
可确保您始终使用相同的二进制文件,无论您是通过./srdb.cli.php
还是使用php srdb.cli.php
调用脚本。
停止 mysql :
sudo service mysql stop
然后启动它:
sudo service mysql start
它解决了问题
要添加到z80crew的辉煌解决方案,为别人不熟/不舒服改变路径变量,指定用于毫安PHP程序,并通过互联提供的命令行脚本搜索替换-DB脚本既充分位置路径解决了这个问题对我来说。 我把要搜索的字符串放在引号中并用引号替换。 我还增加了 wp-config.php 中的 php 超时限制: set_time_limit(3000);
我与传递给脚本的选项和 wp-config.php 文件中的内容之间的服务器名称保持一致(在 wp-config 中使用 localhost,在脚本中也使用 localhost)
/Applications/MAMP/bin/php/php7.4.2/bin/php /Applications/MAMP/htdocs/test/Search-Replace-DB-master/srdb.cli.php -h localhost -u root -proot --port 8889 -n test -s "http://olddomain.com" -r "http://localhost:8888/test" -v true
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.