mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

Cygwin - Ruby on Rails で MySQL ソケットエラー!

[ サーバ構築, プログラミング ] [ Cygwin, MySQL, Rails, Ruby ]

こんばんは。

当方の 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 で動かしてみるかもしれません)

しかし、実際に動かしてみると以下のようなエラーが出力されます。

1
2
Can't connect to local MySQL server through
socket '/tmp/mysql.sock' (2)

Cygwin の Ruby だと UnixSocket を使おうとしてエラーとなっているようです。

色々調べてみた結果、以下のようにすると良いようです。

●config/database.yml を以下のように編集。 (development での設定例(production, test も同様))

1
2
3
4
5
6
7
8
9
10
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