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

8 php mamp

我已将PushChatServer目录放在htdocs文件夹中并创建数据库puschat尝试运行@" http://localhost/PushChatServer/api/test/database.php "

然后我得到了以下异常.

我想做同样的事来解释这个链接http://www.raywenderlich.com/32963/apple-push-notification-services-in-ios-6-tutorial-part-2

我做了所有这些,但我得到了这个例外

无法连接到数据库.原因:异常'PDOException',消息'SQLSTATE [HY000] [2002]没有这样的文件或目录'在/Applications/MAMP/htdocs/PushChatServer/api/test/database.php:17堆栈跟踪:#0/Applications/MAMP /htdocs/PushChatServer/api/test/database.php(17):PDO - > __ construct('mysql:host = loca ...','root','root',Array)#1 {main}

小智 18

快速测试(在shell中运行):

php -r "new PDO('mysql:hostname=localhost;dbname=test', 'username', 'password');"
Run Code Online (Sandbox Code Playgroud)

SQLSTATE [HY000] [2002]没有这样的文件或目录意味着php无法找到mysql.default_socket文件.通过修改php.ini文件来修复它.在Mac上它是mysql.default_socket = /tmp/mysql.sock(参见PHP - MySQL连接不工作:2002没有这样的文件或目录)

SQLSTATE [HY000] [1044]访问被拒绝用户'用户名'@'localhost'祝贺!您现在拥有正确的mysql.default_socket设置.修复您的dbname /用户名/密码.

另请参阅在PHP中创建与PDO的连接时出现的错误


Adr*_*uez 15

Laravel 4:在localhost尝试将主机从更改127.0.0.1app/config/database.php

Laravel 5:在localhost文件中,127.0.0.1从更改.envDB_HOST

来源:PDOException SQLSTATE [HY000] [2002]没有这样的文件或目录


Isa*_*uza 5

使用PHP 5.6.30(macOS Sierra)和简单的PDO代码时,我遇到了相同的错误:

$pdo = new PDO('mysql:host=localhost;dbname=db_php', 'root', '');
Run Code Online (Sandbox Code Playgroud)

而且我收到了相同的错误消息。要修复,我在代码中将IP(回送)“ 127.0.0.1”更改为“ localhost”:

$pdo = new PDO('mysql:host=127.0.0.1;dbname=db_php', 'root', '');
Run Code Online (Sandbox Code Playgroud)

要测试连接:

$ php -r "new PDO('mysql:host=127.0.0.1;dbname=db_php', 'root', '');"
Run Code Online (Sandbox Code Playgroud)

这项工作是给我的!


小智 4

重新启动数据库和本地 Web 服务器:

sudo service mysqld restart
Run Code Online (Sandbox Code Playgroud)

它应该有效!