PHP の MySQL で "No such file or directory" と出た時の対処方法


症状

  • MacOS X の MAMP で WebからのDB接続は問題ない
  • けど、コマンドラインからやると接続エラー
  • エラー内容は "No such file or directory" となる

原因

mysql.sock の場所の指定がおかしいから

対策

以下で治った

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

調べ方

以下のコマンドで、設定しているsockファイルの場所を調べる

% php -i | grep socket
mysql.default_socket => /var/mysql/mysql.sock => /var/mysql/mysql.sock
mysqli.default_socket => /var/mysql/mysql.sock => /var/mysql/mysql.sock
pdo_mysql.default_socket => /var/mysql/mysql.sock => /var/mysql/mysql.sock

コード上で、mysql_connect 当の後に

mysql_error();

でエラー内容見られるよ

参考

php - Warning: mysql_connect(): [2002] No such file or directory (trying to connect via unix:///tmp/mysql.sock) in - Stack Overflow
http://stackoverflow.com/questions/4219970/warning-mysql-connect-2002-no-such-file-or-directory-trying-to-connect-vi