我试图连接到我的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套接字。

其他回答

原因是php无法找到mysql.sock的正确路径。

请确保您的mysql首先运行。

然后,请确认哪个路径是mysql。Sock,例如/tmp/mysql.sock

然后将这个路径字符串添加到php.ini:

Mysql.default_socket = /tmp/mysql.sock Mysqli.default_socket = /tmp/mysql.sock Pdo_mysql.default_socket = /tmp/mysql.sock

最后,重新启动Apache。

我也遇到过同样的问题,我是这样解决的:

我有这个,但不管用:

$con = mysql_connect('localhost', 'root', '1234');

我这样做了,效果很好:

$con = mysql_connect(':/Applications/MAMP/tmp/mysql/mysql.sock', 'root', '1234');

我没有使用mysql服务器,而是直接连接到Unix Socket。为我工作。

修复了即将出现的2002套接字错误——这是连接MySQL放置套接字的地方和OSX认为它应该在的地方,MySQL把它放在/tmp中,OSX在/var/ MySQL中寻找它,套接字是一种允许MySQL客户端/服务器通信的文件类型。

sudo mkdir /var/mysql

然后

sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock

来源:http://coolestguidesontheplanet.com/get-apache-mysql-php-phpmyadmin-working-osx-10-10-yosemite/

我也有同样的问题

(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/

我使用的是Mac OS X上的XAMPP,上面Brian Lowe的解决方案只需要稍加修改就能工作。

mysql。sock文件实际上在“/Applications/xampp/xamppfiles/var/mysql/”文件夹中。所以必须在/tmp和/var/mysql中链接它我还没有检查哪一个被PHP命令行使用,但这做了修复,所以我很高兴:-)

sudo su
ln -s /Applications/xampp/xamppfiles/var/mysql/mysql.sock /tmp/mysql.sock
mkdir /var/mysql
ln -s /Applications/xampp/xamppfiles/var/mysql/mysql.sock /var/mysql/mysql.sock