首页 文章

在Mac上使用MAMP获取“db:SQLSTATE [HY000] [2002] Connection refused”错误

提问于
浏览
2

我正在尝试运行此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 回答

  • 0

    正如我在评论中已经说过的那样,你可能没有运行你认为正在运行的PHP二进制文件 . 即使MAMP php二进制文件在你的路径中, srdb.cli.php 中的shebang行读取 #!/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 可以确保're always using the same binary no matter if you'通过 ./srdb.cli.phpphp srdb.cli.php 重新调用脚本 .

  • 8

    停止mysql:

    sudo service mysql stop
    

    然后开始吧:

    sudo service mysql start
    

    它解决了这个问题

相关问题