7

我试图从 cake 命令行工具生成模型代码。但是遇到了这个问题。

Warning Error: PDO::__construct(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) in [/Users/test/Google_WWW/project_name/lib/Cake/Model/Datasource/Database/Mysql.php, line 177]

Error: Database connection "Mysql" is missing, or could not be created. (although it's showing that mysql database is connected at localhost in cakephp directory)

我正在使用 MAMP。

我搜索了很多并找到了一些解决方案。例如,这个 CakePHP:没有这样的文件或目录(试图通过 unix:///var/mysql/mysql.sock 连接)

或者我也可以做一个mysql.sock的符号链接。

/Applications/MAMP/tmp/mysql/mysql.sock (not present in directory)

但在我做任何事情之前,问题是这个目录中不存在 mysql.sock 文件。我尝试重新安装 MAMP 但仍然没有 mysql.sock。

请帮我解决这个问题?我可以创建自己的 mysql.sock 文件吗?

编辑:我的数据库配置

public $default = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => 'root',
    'password' => 'root',
    'database' => 'db_name',
    'prefix' => ''
);
4

7 回答 7

11

说到 mysql,MAMP 很奇怪。您可能需要设置一个符号链接,以便它知道在哪里可以找到它。就像是:

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

于 2013-10-12T00:08:05.500 回答
4

在搜索并尝试了很多东西之后,我终于设法解决了我的问题。上面给出的答案 Chuck Burgess 可以解决问题,但我的情况略有不同,我无法在以下位置看到 mysql.sock 文件:

    /Applications/MAMP/tmp/mysql/mysql.sock

我以为我的 mysql.sock 不见了,但实际上它就在那里并且被隐藏了(这很奇怪!我使用 CLI 去了那个文件夹并看到了那个)。我正在使用以“。”开头的 MAC 和文件。通常是隐藏的,但不知道为什么 mysql.sock 被隐藏所以我所做的是在我的数据库配置文件中添加了 1 个参数(unix_socket),我的问题得到了解决。

   'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock'
于 2013-10-15T12:15:39.180 回答
1

就我而言,这是因为我调用了错误的 PHP 版本。即/usr/bin/php当 MAMP Pro 的 php 是/Applications/MAMP/bin/php/php5.3.29/bin/php

于 2015-05-01T14:34:00.410 回答
0

我整个周末都在为此苦苦挣扎,终于解决了。原来 php.ini 指向一个不存在的“扩展目录”。创建一个 phpinfo() 文件并查看该字段的值: extensions_dir

我注意到在 mamp php 安装文件夹中有一个 no-debug-non-zts-20131226 文件夹,它与 phpinfo() 中显示的值不同。我所做的是克隆这个文件夹并将名称更改为 phpinfo() 的值。可能您可以修改 php.ini 文件,但我不想这样做。

我看到你解决了你的问题,但我的问题不同,所以我发布这个答案是为了帮助未来的谷歌人寻找类似的问题。

希望这可以帮助。

于 2014-11-02T18:44:09.500 回答
0

就我而言,问题出现在停电后。所以我通过删除 /Applications/MAMP/tmp/mysql/mysql.pid 文件并重新启动 MAMP 来修复它。

于 2016-10-17T23:26:36.027 回答
0

这里有同样的问题,但设法解决它连接到 IP:Port,而不是套接字。

'host' => '127.0.0.1', //use 172.0.0.1 instead of localhost
'port' => '8889', //default MAMP MySQL devel port, default production port is 3306

忘记套接字连接。

于 2020-08-22T11:23:21.107 回答
0

使用 MAMP 在文件夹 /var/mysql/ 中创建一个符号链接:

sudo ln -n /Applications/MAMP/tmp/mysql/mysql.sock /var/mysql/mysql.sock

于 2016-10-25T14:30:58.940 回答