MAMP環境でのCakePHPのmysql.sockの指定方法

Posted by Tatsuyano on Mon, Feb 4, 2013
In
Tags php, mysql, mac

worning

MacにMAMPをインストールし、CakePHPの「bakeコンソール」でModelクラスを作成したさいに、mysql.sockの指定箇所が違うよと警告された

Warning Error: PDO::__construct(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) in [/Applications/MAMP/htdocs/bake/lib/Cake/Model/Datasource/Database/Mysql.php, line 149]

Error: Database connection "SQLSTATE[HY000] [2002] No such file or directory" is missing, or could not be created.
#0 /Applications/MAMP/htdocs/bake/lib/Cake/Model/Datasource/DboSource.php(260): Mysql->connect()

MAMPを使っているので、mysql.sockは「/Applications/MAMP/tmp/mysql/mysql.sock」作成されている。
たぶん解決方法としては3つあって、
1.sockファイルをworiningに書いてある「/var/mysql/mysql.sock」に生成するようMysql側の設定をいじる。
2.「/var/mysql/mysql.sock」に「/Applications/MAMP/tmp/mysql/mysql.sock」のリンクを貼ってしまう。
3.たぶん「app/Config/database.php」に現在生成されているmysql.sockの場所を指定する。

どう考えても「3」が正しいやり方だと思うけど、なかなかそれっぽい情報が引っかからなかったがやっとあった。

Cakephp console (bake) on Mac OS with Mamp : database connection error


public $default = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => 'USERNAME',
    'password' => 'PASSWORD',
    'database' => 'DATABASE',
    'encoding' => 'utf8',
    'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock' # <- this
    );

2.x系から、socketの指定がデフォルトと違う場合に上記のように設定する模様。