CakePHP:没有这样的文件或目录(尝试通过unix连接:///var/mysql/mysql.sock)

iam*_*esy 13 php mysql cakephp mysql-error-2002

我有一个cakephp应用程序在我的本地机器(mac osx)上运行了一段时间然后突然我意识到我无法连接到mysql.sock.

我收到这个错误:

Warning (2): mysql_connect() [http://php.net/function.mysql-connect]: [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) [CORE/cake/libs/model/datasources/dbo/dbo_mysql.php, line 540]
Run Code Online (Sandbox Code Playgroud)

dbo_mysql.php的第540行读取:

$this->connection = mysql_connect($config['host'] . ':' . $config['port'], $config['login'], $config['password'], true);
Run Code Online (Sandbox Code Playgroud)

我已经检查过,没有文件//var/mysql/mysql.sock.它实际上在/tmp/mysql.sock中

我尝试更改我的php.ini.default以匹配上面的内容,但它已经设置为在/ tmp /中查找本地连接.为什么,错误来自何处?

有没有人遇到过类似的错误?

谢谢,

Jonesy

Abb*_*ant 12

尝试在APP/config/database.php中传递mysql.sock文件的绝对路径

<?php
    class DATABASE_CONFIG {
        var $default = array(
            'driver' => 'mysql',
            'persistent' => false,
            'host' => 'localhost',
            'login' => 'dbUser',
            'password' => 'dbPassword',
            'database' => 'dbName',
            'prefix' => '',
            'port' => '/path/to/mysql.sock'
        );
    }
Run Code Online (Sandbox Code Playgroud)

这比通过ip进行本地连接更好,因为套接字连接要快得多.


Mil*_*tic 12

如果您遇到CakePHP 2.0的问题,请尝试以下方法:

sudo mkdir /var/mysql
sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /var/mysql/mysql.sock
Run Code Online (Sandbox Code Playgroud)

  • 使用MAMP适用于Mac (2认同)

小智 6

在phpcake 2.0中使用'unix_socket'而不是port

<?php
    class DATABASE_CONFIG {
        var $default = array(
            'datasource' => 'Database/Mysql',
            'persistent' => false,
            'host' => 'localhost',
            'login' => 'dbUser',
            'password' => 'dbPassword',
            'database' => 'dbName',
            'prefix' => '',
            'unix_socket' => '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock', //Path for mac XAMPP
        );
    }
Run Code Online (Sandbox Code Playgroud)