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とは何か
PHPがMySQL等の接続をするのに使うらしい。
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 にかえておく。