Cygwin - Ruby on Rails で MySQL ソケットエラー!
Updated:
当方の Cygwin 環境に Ruby を導入したことだし、Linux サーバで運用中の Ruby on Rails アプリを Cygwin 上で動かしてみようと考えました。
Ruby、RubyGems、MySQL は導入済みなので、後は Gem で Rails をインストールしてソースを用意すればよいだけです。 ※MySQL は Cygwin 側ではなく Windows にインストールし、Cygwin 側には MySQL クライアントのみをインストール。 ※Web サーバはとりあえず Rails 標準の WEBrick を使用。 (いずれ、Mongrel、Apache2 + Phusion Passenger、Nginx で動かしてみるかもしれません)
しかし、実際に動かしてみると以下のようなエラーが出力されます。
Can't connect to local MySQL server through
socket '/tmp/mysql.sock' (2)
Cygwin の Ruby だと UnixSocket を使おうとしてエラーとなっているようです。
色々調べてみた結果、以下のようにすると良いようです。
●config/database.yml を以下のように編集。 (development での設定例(production, test も同様))
development:
adapter: mysql2
encoding: utf8
reconnect: false
database: hoge
pool: 5
username: fuga
password: 99999999
host: 127.0.0.1
# socket: /var/lib/mysql/mysql.sock
- config/database.yml 内で socket が指定されていれば削除もしくはコメントアウトする。
- config/database.yml 内で host が指定されていなければ記述する。 このとき、値は “LOCALHOST” もしくは “127.0.0.1” とする。 (host 名が “localhost” かそれ以外で判断しているため)
これで、Cygwin でも Ruby on Rails が Linux サーバ上と全く同じソースで動くようになりました。(config/database.yml の設定を除いて)
少し前に「Cygwin - MySQLクライアントインストール!」でも、Cygwin から Windows 上の MySQL サーバへ接続する際にホスト名を “127.0.0.1” と明示しないといけない旨を記載していますが、それと同じ要因ですね。
以上です。
Comments