Windows7のrailsからmysql接続でエラー

Windows7のrailsからmysql接続でエラー

Windows環境でmysql-connectorが正しく動かなくて苦労しました

ダウンロードできる64ビットWindows版のmysql-connectorに同梱されているlibmysql.libは、64ビット版DevKitのmingw64-gccコンパイラと非互換のため、mingw64互換のlibmysql.libを生成する必要があるようです。

rails cを実行した時のエラーは以下の内容です

c:/Users/lanchester/myproject/bundle/ruby/2.1.0/extensions/x64-mingw32/2.1.0/mysql2-0.3.17/mysql2/mysql2.so: [BUG] Segmentation fault

ruby 2.1.5p273 (2014-11-13 revision 48405) [x64-mingw32]

対応としては、以下のURLからsvm-map-win.zipをダウンロードしてきます。

https://structure-svm-map.googlecode.com/files/svm-map-win.zip

gendef.exeをつかってMySQL-Connectorのlibmysql.dllからlibmysql.defを生成します。

gendef.exe libmysql.dll

あとはDevKitのdllToolを使って以下のようにlibmysql.libを生成します。

dlltool -v –dllname libmysql.dll –def libmysql.def –output-lib libmysql.lib

生成が完了したら、libmysql.libをmysql-connectorのファイルに上書きします。

ちなみに、MySQL-Connectorはインストーラを使って入れたので、bundlerでmysql2のgemをインストールするためにbundlerの設定ファイルに以下のように設定しています。

~/.bundle/config

BUNDLE_BUILD__MYSQL2: “–platform=ruby –with-mysql-dir=’C:\\\\Program Files\MySQL\MySQL Connector C 6.1′”

2015.02.05 追記

MySQL Connectorは、libmysql.dllのある場所にパスを通す必要があります。

TAG

金子 将範
エンジニア 金子 将範 rubyist

新しいことや難しい課題に挑戦することにやりがいを感じ、安定やぬるい事は退屈だと感じます。 考えるより先に手が動く、肉体派エンジニアで座右の銘は諸行無常。 大事なのは感性、プログラミングにおいても感覚で理解し、感覚で書きます。