一尘不染

警告:PDO :: __ construct():[2002]在以下目录中没有这样的文件或目录(试图通过unix:///tmp/mysql.sock连接)

mysql

我的代码昨天运行良好,今天突然不希望连接到我的数据库。我没有更改任何设置,也没有更改代码,也没有更新任何软件。我要做的就是:

new PDO('mysql:host=localhost;port=3306;dbname=test', 'username', 'password');

而且我收到一条很好的异常消息,上面写着:

警告:PDO :: __
construct():[2002]在…中没有这样的文件或目录(试图通过unix:///tmp/mysql.sock连接)。

问题是:我显然不是在尝试使用UNIX套接字进行连接,而是在使用TCP / IP。我究竟做错了什么?我在这里想念什么吗?

谢谢你的帮助。


阅读 299

收藏
2020-05-17

共1个答案

一尘不染

您正在使用Unix套接字。在读取“ localhost”时,MySQL客户端库不会将其解释为TCP主机“
localhost”并解析该名称,而是使用默认的Socket位置。为了在本地计算机上使用TCP,您必须127.0.0.1用作主机名。

指定过去的用法,unix_socket而不是host在DSN中。用于插座的位置localhost可以在编译时或在使用PHP的一些版本中定义pdo_mysql.default_socketphp.ini

2020-05-17