CakePhp:そのようなファイルやディレクトリはありません(unix:///var/mysql/mysql.sock経由で接続しようとしています)

StackOverflow https://stackoverflow.com/questions/3968013

質問

しばらくの間、ローカルマシン(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);

私はチェックしました、fle //var/mysql/mysql.sockはありません。実際には/tmp/mysql.sockにあります

上記と一致するようにphp.ini.defaultを変更しようとしましたが、既にローカル接続を調べるように設定されています。なぜ、そしてエラーはどこから来るのですか?

誰かが同様のエラーに出くわしましたか?

ありがとう、

ジョーンズ

役に立ちましたか?

解決

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を介して実行するよりも優れています。

他のヒント

CakePHP 2.0に問題がある場合は、これを試してください。

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

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
        );
    }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top