数据库连接“Mysql”丢失,缺少mysql.sock

时间:2013-10-11 14:22:56

标签: mysql cakephp mamp mysql.sock

我试图从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: No such file or directory (trying to connect via 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' => ''
);

7 个答案:

答案 0 :(得分:8)

对于mysql来说,MAMP很奇怪。您可能需要设置符号链接,以便知道在哪里找到它。类似的东西:

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

答案 1 :(得分:3)

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

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

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

   'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock'

答案 2 :(得分:1)

在我的情况下,这是因为我调用了错误的PHP版本。即我正在使用/usr/bin/php当MAMP Pro的php为/Applications/MAMP/bin/php/php5.3.29/bin/php

答案 3 :(得分:0)

整个周末我一直在努力解决这个问题,最终解决了这个问题。事实证明,php.ini指向一个不存在的“扩展目录”。创建一个phpinfo()文件并查看该字段的值: extensions_dir

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

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

希望这有帮助。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

使用MAMP在文件夹/ var / mysql /:

中创建符号链接

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

答案 6 :(得分: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

忘记套接字连接。