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” と明示しないといけない旨を記載していますが、それと同じ要因ですね。


以上です。





 

Sponsored Link

 

Comments