13

我有一个 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]

dbo_mysql.php 的第 540 行内容如下:

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

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

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

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

谢谢,

琼斯

4

3 回答 3

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'
        );
    }

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

于 2010-10-19T18:15:21.407 回答
12

如果您在使用 CakePHP 2.0 时遇到问题,请尝试以下操作:

sudo mkdir /var/mysql
sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /var/mysql/mysql.sock
于 2012-01-19T13:12:18.413 回答
6

在 phpcake 2.0 中使用 'unix_socket' 而不是端口

<?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
        );
    }
于 2011-11-02T17:00:13.757 回答