我试图连接到我的MySQL数据库与终端在我的苹果(与PHP)。

昨天它工作正常,现在我突然得到错误的标题。

当我使用浏览器运行该脚本时(我已经安装了XAMPP),但终端拒绝连接到DB。

下面是我要连接的文件(当我不包括这个时,脚本工作,但它不连接到DB):

<?php
    mysql_connect("localhost", "root", "") or die(mysql_error());
    mysql_select_db("FNB1C_data") or die(mysql_error());
?>

这应该可以工作,因为它适用于我的浏览器。

我在终端上使用的命令是php scriptname.php。


当前回答

我也有这个错误,但只能通过这里的建议来修复。

总结一下,用:

127.0.0.1

而不是:

localhost

原因是“localhost”是MySQL驱动程序的一个特殊名称,它使用UNIX套接字来连接MySQL,而不是TCP套接字。

其他回答

我只是有这个问题,但它只出现在加载某些页面(其他页面工作正常)。原来,在我关闭mysql_close()连接后,我正在调用MySQL。所以,正如@ bruenan所说:确保MySQL在调用时正在运行。

我也有同样的问题

(PDOException) SQLSTATE[HY000][2002]没有这样的文件或目录

(ErrorException) 警告:PDO::__construct():[2002]没有这样的文件或目录(试图通过unix:///var/mysql/mysql.sock连接)在…htdocs/Symfony/vendor/ Doctrine - DBAL/ lib/Doctrine/DBAL/Driver/PDOConnection.php

因此,解决方案是创建一个指向sock文件的符号链接,从而解决问题。请执行以下操作来解决该问题:

$ sudo mkdir /private/var/mysql/

$ sudo ln -s /Applications/MAMP/tmp/mysql/mysql袜子/私人/ var / mysql / mysql.sock

来源:http://www.reecefowell.com/2012/07/21/symfony2-cli-does-not-connect-to-mysql-while-browser-works-fine/

我也有这个错误,但只能通过这里的建议来修复。

总结一下,用:

127.0.0.1

而不是:

localhost

原因是“localhost”是MySQL驱动程序的一个特殊名称,它使用UNIX套接字来连接MySQL,而不是TCP套接字。

你可以通过在苹果终端上别名MAMP php来实现:

alias phpmamp='/Applications/MAMP/bin/php/php7.0.0/bin/php'

例如:> phpmamp - v

现在您可以运行如下代码:> phpmamp scriptname.php

注意:这将只应用于当前终端会话。

mySQL客户端默认尝试通过一个称为套接字的本地文件进行连接,而不是连接到本地主机的环回地址(127.0.0.1)。

至少在OSX上,这个套接字文件的默认位置是/tmp/mysql.sock。

快速,不那么优雅的解决方案

创建一个符号链接来欺骗操作系统找到正确的套接字。

ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp

妥善解决

修改/Applications/MAMP/bin目录下startMysql.sh文件中定义的套接字路径。