我正在尝试运行此PHP数据库Search and Replace Script的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
What I've tried
-
我能够使用这些设置连接到mysql,没问题,使用
mysql -u root -proot
等... -
为localhost交换127.0.0.1会产生相同的错误 .
-
我所有的my.cnf文件都是空白的 .
-
Apache和MySQL运行正常 .
-
我在另一台运行MAMP的Mac上成功复制了这个问题
我正在使用 mysql
:/ Applications / MAMP / Library / bin / mysql
这个 php
:/Applications/MAMP/bin/php/php5.3.28/bin/php
有人有什么想法吗?谢谢!
Edit
以下是显示脚本如何连接到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
2 回答
正如我在评论中已经说过的那样,你可能没有运行你认为正在运行的PHP二进制文件 . 即使MAMP php二进制文件在你的路径中,
srdb.cli.php
中的shebang行读取#!/usr/bin/php
,并指向Apple提供的php二进制文件 .因此,如果您使用MAMP php二进制文件的完整路径调用脚本,则应避免出现此问题:
另一个解决方案可能是用以下方法替换shebang线:
仅当MAMP二进制文件位于
/usr/bin
前面的$ PATH中时,此方法才有效 . 但是,使用#!/usr/bin/env php
可以确保're always using the same binary no matter if you'通过./srdb.cli.php
或php srdb.cli.php
重新调用脚本 .停止mysql:
然后开始吧:
它解决了这个问题