我正在尝试运行此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
我尝试了什么
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
答案 0 :(得分:9)
正如我在评论中所述,很可能你没有运行你认为运行的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
可确保您始终使用相同的二进制文件,无论您是通过./srdb.cli.php
还是php srdb.cli.php
调用脚本。
答案 1 :(得分:0)
停止mysql:
sudo service mysql stop
然后启动它:
sudo service mysql start
它解决了问题
答案 2 :(得分:0)
要添加到z80crew的出色解决方案中,对于不熟悉/不喜欢更改路径变量的其他任何人,请为两者指定MAMP php二进制文件的完整位置路径,并搜索-由互连提供的cli脚本中的replace-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