【Rails】ローカルホストでmysql.sockがないってエラー
ローカルでWebrickを立ち上げようとしたときに起こる以下のようなエラーの解決策。
Can't connect to local MySQL server through socket '/opt/lampp/var/mysql/mysql.sock' (2)
エラーの意味としては、「mysqlに接続するためのソケットファイルが指定した場所にないじゃん」ってことになる。要すると、config/database.yml
できちんとmysqlのソケットファイルのパスを指定してやればokです。
以下を参考に、詳細な解決方法。
osx - Cannot find mysql.sock - Stack Overflow
まず下のコマンドを叩いて、mysql.sock
ファイルへのパスが書かれてる場所を探します。
% mysqladmin variables
それかMacならlocate
コマンドとかで探しても良いと思う。
追記 (2015/10/26)
mysql_config
にsocketオプションをつけると一発でパスだけ調べれることを知りました。こっちの方が全然ラクだった。
$ mysql_config --socket /tmp/mysql.sock
そもそもsocketファイルがない、みたいなときは以下の方法をとればsocketファイルを生成してくれます。
osx snow leopard - mysql.sock is not created OSX - Stack Overflow
/etc/my.conf
を以下みたいに作成。
[mysqld] socket=/var/mysql/mysql.sock [client] socket=/var/mysql/mysql.sock
これでmysqld_safe
を走らせれば、mysqlのデーモンプロセスが走るので、この設定ファイルを読んで指定の場所にmysql.sock
を作成してくれます。自分の場合、Mac OS Xでパスは以下だった。
$ /usr/local/bin/mysqld_safe
mysqld_safe
については以下が参考になる。
http://open-groove.net/mysql/mysqld-mysqldsafe/
そしたらrailsアプリのdatabase.yml
で、socketファイルの指定場所を、さっき確認したところに変更します。
動きます(はず!!!)
参考: Rails: Can't connect to local MySQL server through socket - Stack Overflow