Rodhos Soft

備忘録を兼ねた技術的なメモです。Rofhos SoftではiOSアプリ開発を中心としてAndroid, Webサービス等の開発を承っております。まずはご相談下さい。

migrationのbakeでerror

migrationを試そうとbakeを実行したところ次のようなエラーがおきた。

Error: [PDOException] SQLSTATE[HY000] [2002] No such file or directory in /Applications/MAMP/htdocs/hoge/vendor/cakephp/cakephp/src/Database/Driver/PDODriverTrait.php on line 47

PDOとは何か
PHPMySQL等の接続をするのに使うらしい。

php.iniで

[PDO]
pdo_mysql.default_socket = /Applications/MAMP/tmp/mysql/mysql.sock

となっているが、
実際にそこにmysql.sockがないようだ。mysql.pidというのはみつけた。

phpMyAdminの変数でsoketの項目をみると前述の設定にちゃんとなっている。

mysqlの設定をみる。

mysql_config --socket
/Applications/MAMP/tmp/mysql/mysql.sock

そして実際そこにcdしてlsしてみたらあった。ウィンドウでは見えないようだ。

以下に回答らしきものがあった。
SOLVED: Can't connect to local mySQL server through socket

MAMPで発生していたらしい。

ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock

をして、MySQLを再起動させたところ無事通った。


そして
MAMP/bin/startMySQL.shの

#!/bin/sh

/Applications/MAMP/Library/bin/mysqld_safe --port=8889 --socket=/Applications/MAMP/tmp/mysql/mysql.sock --pid-file=/Applications/MAMP/tmp/mysql/mysql.pid --log-error=/Applications/MAMP/logs/mysql_error_log &

このsoketが/Applications/MAMP/tmp/mysql/mysql.sock になっていること。それがおかしいことの原因のようだ。
ここを /Applications/MAMP/tmp/mysql/mysql.sock にかえておく。