11

コマンドrails serverはこのエラーをスローします。

C:/Ruby200/lib/ruby/gems/2.0.0/gems/mysql2-0.3.11-x86-mingw32/lib/mysql2/mysql2.rb:2:in `require': cannot load
 such file -- mysql2/2.0/mysql2 (LoadError)

Windows XPボックスのRubyInstallerからRuby 2.0.0を使用しています。

何が問題なのかはわかりましたが、解決方法がわかりません。問題は、 gem2.0/にディレクトリがないことです。mysql2-0.3.11-x86-mingw32これは、依存関係としてGemfilerailsからインストールされるgemです。

GEM
  remote: https://rubygems.org/
  specs:
     ... many gems here
     mysql2 (0.3.11-x86-mingw32)
     ... many gems here
DEPENDENCIES
  ...
  mysql2
  ...

これはそのmysql2.rbファイルにあるものです:

# C:\Ruby200\lib\ruby\gems\2.0.0\gems\mysql2-0.3.11-x86-mingw32\lib\mysql2\mysql2.rb

RUBY_VERSION =~ /(\d+.\d+)/
require "mysql2/#{$1}/mysql2"  # <<-- this is that #2 line that throws an error

現在の Ruby バージョン番号を取得し、それをパス セグメントとして使用してmysql2ファイルに到達することは明らかです。実はmysql2.soファイルです。Ruby 2.0.0を使用しているため、パス セグメントは2.0次のとおりです。

mysql2/2.0/mysql2

それでは、mysql2-0.3.11-x86-mingw32gemのディレクトリがどのように見えるか見てみましょう。

dir: C:\Ruby200\lib\ruby\gems\2.0.0\gems\mysql2-0.3.11-x86-mingw32\lib\mysql2\

ここに画像の説明を入力

2.0/ディレクトリはありません。

libmysql.dllに関する問題を知っています。私はそれを持っていC:\Ruby200\binます。役に立ちません。

RubyInstaller の作成者からこの回答https://stackoverflow.com/a/5368767/1114926を読みました。試してみましたが、役に立ちませんでした。ディレクトリRuby 1.9.3があるので動作します。1.9/しかし、それは機能しませんRuby 2.0.0

それを解決する方法は?


更新 1:

ご回答ありがとうございます。私はもう試した。残念ながら、私はERROR: Failed to build gem native extension.エラーがあります:

C:\>gem install mysql2 --platform=ruby
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
ERROR:  Error installing mysql2:
        ERROR: Failed to build gem native extension.

    C:/Ruby200/bin/ruby.exe extconf.rb
checking for rb_thread_blocking_region()... *** 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:/Ruby200/bin/ruby
C:/Ruby200/lib/ruby/2.0.0/mkmf.rb:431:in `try_do': The compiler failed to generate an executable file. (Runtim
eError)
You have to install development tools first.
... other code follows here...

それは言います:

最初に開発ツールをインストールする必要があります。

しかし、完全な DevKit がインストールされており、RubyInstaller によってインストールされます。他に何が必要なのか理解できません。

既にmysql2GitHub ページhttps://github.com/brianmario/mysql2/issues/364に問題を投稿しました。まだ答えはありません。

4

5 に答える 5

5

アンインストールmysql2-0.3.11-x86-mingw32すると、以前にコンパイルされた gemが機能しRuby200なくなります。自分でコンパイルする必要があります。実行gem uninstall mysql2し、コンパイルされていないバージョンがリストされている場合は、アンインストールするだけmysql2-0.3.11-x86-mingw32です-それ以外の場合はコンパイルされたバージョン...

インストール gem install mysql2 --platform=ruby。それはうまくいくでしょう。

devkit http://rubyonwindowsguides.github.com/book/ch02-04.htmlのインストールについては、このガイドに従ってください。

その後、もう一度やり直してください。

于 2013-03-25T11:13:45.390 に答える
2

@odiszapcが説明したこととほぼ同じことをしました。古い gem をアンインストールし、mysql-connector-c-noinstall をダウンロードして解凍しますが、最後にこのコマンドを使用してネイティブ gem をビルドしました。

gem install mysql2 --platform=ruby -- --with-opt-dir=/c/connector-6.0.2

(git-bash を使用する場合は、UNIX スタイルのディレクトリ構文を使用できます。)

于 2013-04-08T11:52:20.317 に答える
2

Windows XP に Redmine をインストールしようとしたときとまったく同じ動作

  • 「rake generate_secret_token」を実行しようとすると、「cannot load such file -- mysql2/2.0/mysql2 (LoadError)」が発生しました。
  • そして、 --platform=ruby を使用して mysql2 を再構築しようとすると、緑と同じメッセージが表示されました。

今のところ、私はそこで立ち往生しています...しかし、誰かが私を前進させる何かを持っていれば、それは大歓迎です. こちらも随時お知らせします

アントワーヌ

于 2013-03-27T08:06:46.060 に答える