13

しばらくの間、自分のローカル マシン (mac osx) で Cakephp アプリを正常に実行していましたが、突然 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 に答える