Yosemite 上的 MAMP - 连接错误:SQLSTATE[HY000] [2002] 没有这样的文件或目录

Posted

技术标签:

【中文标题】Yosemite 上的 MAMP - 连接错误:SQLSTATE[HY000] [2002] 没有这样的文件或目录【英文标题】:MAMP on Yosemite - connection error : SQLSTATE[HY000] [2002] No such file or directory 【发布时间】:2015-08-30 08:57:25 【问题描述】:

我知道我以前见过这个问题,但没有看到能够解决我机器上的问题的答案。

我对 php 比较陌生,对 Apache 设置没有经验。

我在最新版本的 OS X (10.3.3) 上使用具有所有默认设置的最新版 MAMP(非专业版)。

当我尝试通过 PDO 连接时,我收到以下错误:

无法连接到数据库 server.exception 'PDOException' with message 'SQLSTATE[HY000] [2002] No such file or directory' in /Applications/MAMP/htdocs/resources/config.php:7 堆栈跟踪:# 0 /Applications/MAMP/htdocs/resources/config.php(7): PDO->__construct('mysql:host=loca...', 'USERNAME', 'PASSWORD') #1 /Applications/MAMP/htdocs/ WEBSITE/index.php(2): include_once('/Applications/M...') #2 main

连接代码来自 Kevin Yank 的新手到忍者书,修改后适用于我的数据库、用户名等。

try

  $pdo = new PDO('mysql:host=localhost;dbname=db', $DBUser,$DBPass);

catch (PDOException $e)


  $error = 'Unable to connect to the database server.' . $e;
  include 'error.html.php';
  exit();

我尝试了 localhost 和 127.0.0.1 并得到同样的错误。

我在控制台中没有看到任何可以提供帮助的东西,但我可能没有找到正确的东西。

感谢任何帮助。谢谢

【问题讨论】:

嗨,是的,我看到 mysqld 在活动监视器中运行。它在我的用户名下。 感谢您的帮助。我的方法是端口,但我没有在代码中包含端口号。我之前尝试过包含它,但使用的是 Apache 端口而不是 MySQL 端口。现在像魅力一样工作。 【参考方案1】:

如果mysqld 没有运行(事情发生),这可能会发生。如果您有配置错误,也可能发生这种情况。

例如,在我的安装中,我用这个 DSN 重现了错误:

mysql:unix_socket=/tmp/mysqle.sock;dbname=notifications;charset=utf8 

配置调用/tmp/mysql.sock

检查配置以查看配置的方法(端口或套接字)以及配置的方法(端口或套接字)。如果您的 DSN 中有错误的端口或套接字,您将在问题中生成相同的错误报告。

【讨论】:

【参考方案2】:

在 mac 中试试这个命令

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

【讨论】:

以上是关于Yosemite 上的 MAMP - 连接错误:SQLSTATE[HY000] [2002] 没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章

在 Mac OS X Yosemite 10.10 上使用 Mamp Pro 进行 Mcrypt

Macports MAMP Yosemite 无法加载虚拟主机 - 虚拟主机无法正常工作

基于名称的虚拟主机在 OS X 10.10 Yosemite 上的 Apache 2.4.9 中不起作用/不允许

升级到 mamp 3 损坏的数据库

MAMP 上的 PHPUnit - 引发致命错误

在 OS X Yosemite 上设置 Apache 2.4.9 时遇到问题