19

Windows7x64システムにmysql2gemをインストールできません。MySQLサーバーの32ビットバージョンと64ビットバージョンの両方を使用してみましたが、それ以上のことはできませんでした。

Ruby 1.8、開発キット、およびRailsプラットフォームをインストールしました。私はminGWをインストールして、C ++/Cでのコンパイルを可能にしました。MySQLサーバーはデフォルトの場所にインストールされました。

コマンドを実行する場合:

C:\Users\Arne>gem install mysql2 -- --with-mysql-include="C:\Program Files (x86)\MySQL\MySQL Server 5.1\include" --with-mysql-lib="C:\Program Files (x86)\MySQL\MySQL Server 5.1\lib\"

コンソールから次の出力を受け取ります。

Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
        --with-opt-dir
        --without-opt-dir
        --with-opt-include
        --without-opt-include=${opt-dir}/include
        --with-opt-lib
        --without-opt-lib=${opt-dir}/lib
        --with-make-prog
        --without-make-prog
        --srcdir=.
        --curdir
        --ruby=C:/Ruby/bin/ruby
        --with-mysql-dir
        --without-mysql-dir
        --with-mysql-include=${mysql-dir}/include
        --with-mysql-lib=${mysql-dir}/lib
        --with-libmysqllib
        --without-libmysqllib
ERROR:  Error installing mysql2:
        ERROR: Failed to build gem native extension.

        C:/Ruby/bin/ruby.exe extconf.rb --with-mysql-include=C:\Program Files (x
86)\MySQL\MySQL Server 5.1\include --with-mysql-lib=C:\Program Files (x86)\MySQL
\MySQL Server 5.1\lib"
checking for rb_thread_blocking_region()... no
checking for main() in -llibmysql... no


Gem files will remain installed in C:/Ruby/lib/ruby/gems/1.8/gems/mysql2-0.3.2 f
or inspection.
Results logged to C:/Ruby/lib/ruby/gems/1.8/gems/mysql2-0.3.2/ext/mysql2/gem_mak
e.out

Rubygemsによる私の環境の出力は次のとおりです。

C:\Users\Arne>gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.7.2
  - RUBY VERSION: 1.8.7 (2011-02-18 patchlevel 334) [i386-mingw32]
  - INSTALLATION DIRECTORY: C:/Ruby/lib/ruby/gems/1.8
  - RUBY EXECUTABLE: C:/Ruby/bin/ruby.exe
  - EXECUTABLE DIRECTORY: C:/Ruby/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-mingw32
  - GEM PATHS:
     - C:/Ruby/lib/ruby/gems/1.8
     - C:/Users/Arne/.gem/ruby/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

次のgemもシステムにインストールされています。

C:\Users\Arne>gem list --local

*** LOCAL GEMS ***

abstract (1.0.0)
actionmailer (3.0.7)
actionpack (3.0.7)
activemodel (3.0.7)
activerecord (3.0.7)
activeresource (3.0.7)
activesupport (3.0.7)
arel (2.0.9)
builder (3.0.0, 2.1.2)
bundler (1.0.12)
erubis (2.7.0, 2.6.6)
fastthread (1.0.7)
i18n (0.5.0)
mail (2.3.0, 2.2.18)
mime-types (1.16)
mysql (2.8.1 x86-mingw32)
polyglot (0.3.1)
rack (1.2.2)
rack-mount (0.7.2, 0.6.14)
rack-test (0.5.7)
rails (3.0.7)
railties (3.0.7)
rake (0.8.7)
rdoc (3.5.3, 2.5.11)
rdoc-data (2.5.3)
rubygems-update (1.7.2)
thor (0.14.6)
treetop (1.4.9)
tzinfo (0.3.27, 0.3.26)

何が欠けているのか、何が間違っているのかわかりませんが、スクリプトが指す出力ファイルには次のデータが含まれています。

mkmf.log:

have_func: checking for rb_thread_blocking_region()... -------------------- no

"gcc -o conftest -I. -IC:/Ruby/lib/ruby/1.8/i386-mingw32 -I.    -g -O2 -DFD_SETSIZE=256    conftest.c  -L. -LC:/Ruby/lib -L.      -lmsvcrt-ruby18-static  -lshell32 -lws2_32  "
conftest.c: In function 't':
conftest.c:7:53: error: 'rb_thread_blocking_region' undeclared (first use in this function)
conftest.c:7:53: note: each undeclared identifier is reported only once for each function it appears in
checked program was:
/* begin */
1: #include <ws2tcpip.h>
2: #include <winsock2.h>
3: #include <windows.h>
4: 
5: /*top*/
6: int main() { return 0; }
7: int t() { void ((*volatile p)()); p = (void ((*)()))rb_thread_blocking_region; return 0; }
/* end */

"gcc -o conftest -I. -IC:/Ruby/lib/ruby/1.8/i386-mingw32 -I.    -g -O2 -DFD_SETSIZE=256    conftest.c  -L. -LC:/Ruby/lib -L.      -lmsvcrt-ruby18-static  -lshell32 -lws2_32  "
C:\Users\Arne\AppData\Local\Temp\ccCicaNu.o: In function `t':
C:\Ruby\lib\ruby\gems\1.8\gems\mysql2-0.3.2\ext\mysql2/conftest.c:3: undefined reference to `rb_thread_blocking_region'
collect2: ld returned 1 exit status
checked program was:
/* begin */
1: /*top*/
2: int main() { return 0; }
3: int t() { rb_thread_blocking_region(); return 0; }
/* end */

--------------------

have_library: checking for main() in -llibmysql... -------------------- no

"gcc -o conftest -I. -IC:/Ruby/lib/ruby/1.8/i386-mingw32 -I. -IC:\Program    -g -O2 -DFD_SETSIZE=256    conftest.c  -L. -LC:/Ruby/lib -LC:\Program -L.      -lmsvcrt-ruby18-static -llibmysql  -lshell32 -lws2_32  "
c:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../mingw32/bin/ld.exe: cannot find -llibmysql
collect2: ld returned 1 exit status
checked program was:
/* begin */
1: #include <ws2tcpip.h>
2: #include <winsock2.h>
3: #include <windows.h>
4: 
5: /*top*/
6: int main() { return 0; }
7: int t() { void ((*volatile p)()); p = (void ((*)()))main; return 0; }
/* end */

"gcc -o conftest -I. -IC:/Ruby/lib/ruby/1.8/i386-mingw32 -I. -IC:\Program    -g -O2 -DFD_SETSIZE=256    conftest.c  -L. -LC:/Ruby/lib -LC:\Program -L.      -lmsvcrt-ruby18-static -llibmysql  -lshell32 -lws2_32  "
c:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../mingw32/bin/ld.exe: cannot find -llibmysql
collect2: ld returned 1 exit status
checked program was:
/* begin */
1: /*top*/
2: int main() { return 0; }
3: int t() { main(); return 0; }
/* end */

--------------------

gem_make.out:

C:/Ruby/bin/ruby.exe extconf.rb --with-mysql-include=C:\Program Files (x86)\MySQL\MySQL Server 5.1\include --with-mysql-lib=C:\Program Files (x86)\MySQL\MySQL Server 5.1\lib"
checking for rb_thread_blocking_region()... no
checking for main() in -llibmysql... no

このgemを正しくインストールして機能させるために、誰かが私が間違っていること、または開発システムに実際に欠けていることを指摘してくれることを願っています。

4

9 に答える 9

41

私は最終的にそれを解決しました:

  1. MySQL 64bit バージョン 5.5 をダウンロードしてインストール
  2. 32 ビット バージョン 5.5 の zip アーカイブをダウンロードしました。
  3. 32 ビットの include および lib フォルダーを に抽出しましたC:\MySQL
  4. Ruby 1.9.2 をインストールしました。
  5. Ruby Devkit をインストールしました。
  6. 宝石をインストールしました:
    1. gem install mysql
    2. gem install mysql2 -- --with-mysql-lib=C:\MySQL\lib --with-mysql-include=C:\MySQL\include
    3. gem install rails
    4. gem install fastthread
    5. gem install haml

今ではチャームとして機能しています。64 ビットを扱う場合、MySQL gem にはデータの検索に問題があるようです。

于 2011-05-02T06:25:50.370 に答える
19

Win7 64/MySQL 5.5 64-bit/Ruby 1.9.2:

  1. libmysql.dllをダウンロードします。
  2. 上記の libmysql.dll をC:\Ruby192\bin AND C:\Ruby192\libにコピーするか、lib と bin がある場所にコピーします。
  3. 走る:
gem install mysql2 -- '--with-mysql-lib="c:\Program Files\MySQL\MySQL Server 5.5\lib" --with-mysql-include="c:\Program Files\MySQL\MySQL Server 5.5\ include" --with-mysql-dir="c:\Program Files\MySQL\MySQL Server 5.5"'

幸運を。

于 2011-09-23T19:47:55.830 に答える
6

それでもエラーが発生する場合は、インストールの手順をクロスチェックしてください -

http://rorguide.blogspot.com/2011/03/installing-mysql2-gem-on-ruby-192-and.html

説明されている手順に従って、ほとんどのユーザーが mysql2 gem をインストールできました。

于 2011-05-30T18:42:29.190 に答える
3

スレッドが Windows に関連していることはわかっていますが、Linux で同じ問題を検索してこのスレッドにたどり着き、lib「libmysqlclient-dev」をインストールして修正しました。

于 2013-05-06T12:08:01.847 に答える
2

受け入れられた答えは私にはうまくいきませんでした、そして他の2もうまくいきませんでした。しかし、Riteshからのリンクに関するMGによるコメントは私のためにトリックをしました。バージョン0.2.6を指定し、パラメーター--platform=rubyを含める必要がありました。(注:/ lib / optを取得するには、MySQLの「noinstall」バージョンもダウンロードする必要がありました)

これが私がWindowsにgemをインストールした方法です

gem install mysql2 -v 0.2.6 -- --platform=ruby --with-mysql-lib=C:\Ruby192\MySQL\lib\opt --with-mysql-dir=C:\Ruby192\MySQL
于 2011-06-14T04:10:15.593 に答える
1

64 ビット Windows 7 の MySQL 5.6 でも同様の問題がありました。ここに記載されている主な解決策は機能しました。(dllをコピーするだけでkobalzが提案した解決策は機能しませんでした。kobalzでは機能するのに、私では機能しない理由がわかりません!)

その後、この投稿で説明されている別の問題に遭遇しました。

間違った mysql クライアント ライブラリ用にコンパイルされた mysql2 gem

そこで説明されている解決策は、完全な 32 ビット MySQL のダウンロードを回避し、両方の問題を修正しました。基本的に、mysql コネクタをダウンロードし (はるかに小さいダウンロード)、それを使用して mysql2 gem をコンパイルします。投稿で説明されているように、正確に正しいバージョンをダウンロードする必要があります。私の場合:

http://dev.mysql.com/get/Downloads/Connector-C/mysql-connector-c-noinstall-6.0.2-win32.zip/from/pick

次に、lib\libmysql.dll ファイルをそこから上記のように Ruby の bin ディレクトリにコピーします。

コネクタを c:\mysql-connector-c-noinstall-6.0.2-win32 に配置しました

したがって、gem をビルドしてインストールするコマンドは次のとおりです。

gem install mysql2 -- --with-mysql-lib="c:\mysql-connector-c-noinstall-6.0.2-win32\lib" --with-mysql-include="c:\mysql-connector-c -noinstall-6.0.2-win32\include" --with-mysql-dir="c:\mysql-connector-c-noinstall-6.0.2-win32"

その後、rake を実行して移行を行ったときにさらに問題が発生しましたが、これは、mysql gem (mysql2 ではなく) を使用していて、database.yml を更新するのを忘れていたためです。mysql2 gem では、次のように指定する必要があります。

開発: アダプター: mysql2

それよりも

開発: アダプター: mysql

これは理解すれば明らかですが、私が受け取ったエラーメッセージは以前に受け取ったものと似ていたので、私の宝石にまだ何か問題があるように見えました.

于 2013-08-07T17:22:08.623 に答える
0

MySQLインストールのbinディレクトリにあるlibmysql.dllをRubyインストールのbinディレクトリにコピーします。鉱山はC:\ Program Files \ MySQLとC:\Rubyにありました。

于 2011-04-30T11:39:45.677 に答える