Error "...cannot load such file -- mysql2/2.0/mysql2 (LoadError)". On Windows XP with Ruby 2.0.0

The command rails server throws this error.

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)

I use Ruby 2.0.0 from RubyInstaller on Windows XP box.

I figured out what is the problem but I don't know how to solve it. The problem is that there is no any 2.0/ directory in the mysql2-0.3.11-x86-mingw32 gem. This is the gem that rails installs as its dependency from Gemfile:

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

This is what is in that mysql2.rb file:

# 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

It is obvious that it takes the current Ruby version number and uses it as the path segment to reach some mysql2 file. In fact it is mysql2.so file. As I use Ruby 2.0.0 the path segment is 2.0:

mysql2/2.0/mysql2

Ok, now lets see how that directory of mysql2-0.3.11-x86-mingw32 gem looks like:

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

enter image description here

No any 2.0/ directory.

I know the issue about libmysql.dll. I have it in my C:\Ruby200\bin. It doesn't help.

I read this answer https://stackoverflow.com/a/5368767/1114926 from the creator of RubyInstaller. I tried but it didn't help. It works for Ruby 1.9.3 because there is 1.9/ directory. But it doesn't work for Ruby 2.0.0.

How to solve it?


UPD 1:

Thank you for your answer. I've tried. Unfortunately I have ERROR: Failed to build gem native extension. error:

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...

It says:

You have to install development tools first.

But I have full DevKit installed, RubyInstaller installs it. Can't understand what else does it need.

I've already posted an issue to mysql2 GitHub page https://github.com/brianmario/mysql2/issues/364. No answers yet.


Solution 1:

Had the absolutely same issue on Windows 7 x64 with Ruby 2.0.0 and DevKit 4.7.

The following steps helped me.

  1. gem uninstall mysql2

  2. Download last MySQL connector from http://cdn.mysql.com/Downloads/Connector-C/mysql-connector-c-noinstall-6.0.2-win32.zip

  3. Extract it to C:\connector-6.0.2

  4. gem install mysql2 --platform=ruby -- '--with-mysql-lib="C:\connector-6.0.2\lib" --with-mysql-include="C:\connector-6.0.2\include" --with-mysql-dir="C:\connector-6.0.2"'

Or even shorter:

gem install mysql2 --platform=ruby -- --with-opt-dir="C:\connector-6.0.2"

Solution 2:

uninstall mysql2-0.3.11-x86-mingw32, gems compiled before Ruby200 won't work. You have to compile it yourself. If you run gem uninstall mysql2 and there is a non compiled version listed then just uninstall mysql2-0.3.11-x86-mingw32 - the compiled version else...

Installation gem install mysql2 --platform=ruby. that would work.

Follow this guide on installing devkit http://rubyonwindowsguides.github.com/book/ch02-04.html.

Then try again.

Solution 3:

Exactly the same behavior when I try to install Redmine on windows XP

  • when I try to do the "rake generate_secret_token", I got "cannot load such file -- mysql2/2.0/mysql2 (LoadError)"
  • and when I try to re build mysql2 using --platform=ruby, I got the same message as you green.

for the moment, I am stucked there ... but if anybody has anything to allow me to move forward, it will be very welcome. I will keep informed as well

antoine