2013-03-24 10 views
11

Il comando rails server getta questo errore.errore "... non può caricare tale file - mysql2/2.0/mysql2 (LoadError)". Su Windows XP con Ruby 2.0.0

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) 

Io uso Rubino 2.0.0 da RubyInstaller sulla scatola di Windows XP.

ho capito qual è il problema, ma non so come risolverlo. Il problema è che non v'è alcuna 2.0/ directory nel mysql2-0.3.11-x86-mingw32 gemma. Questa è la gemma che rails installa come la sua dipendenza dal Gemfile:

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

Questo è ciò che è in quel mysql2.rb di 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 

E 'ovvio che ci vuole l'attuale numero di versione Ruby e usa come il segmento di percorso per raggiungere una certa lima mysql2. In effetti è il file mysql2.so. Come io uso Rubino 2.0.0 il segmento del percorso è 2.0:

mysql2/2.0/mysql2 

Ok, ora vediamo come quella directory di mysql2-0.3.11-x86-mingw32 gemma assomiglia:

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

enter image description here

No qualsiasi 2.0/ directory.

Conosco il problema relativo a libmysql.dll. Ce l'ho nel mio C:\Ruby200\bin. Non aiuta

Ho letto questa risposta https://stackoverflow.com/a/5368767/1114926 dal creatore di RubyInstaller. Ci ho provato ma non è stato d'aiuto. Funziona per Ruby 1.9.3 perché c'è la directory 1.9/. Ma non funziona per Ruby 2.0.0.

Come risolverlo?


UPD 1:

Grazie per la vostra answer. Ho provato. Purtroppo non ho ERROR: Failed to build gem native extension. errore:

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

Dice:

You have to install development tools first.

Ma io ho piena DevKit installato, RubyInstaller lo installa. Non riesco a capire cos'altro ha bisogno.

Ho già inviato un problema a mysql2 pagina GitHub https://github.com/brianmario/mysql2/issues/364. Nessuna risposta ancora.

risposta

5

uninstall mysql2-0.3.11-x86-mingw32, le gemme compilate prima dello Ruby200 non funzionano. Devi compilarlo da solo. Se si esegue gem uninstall mysql2 e c'è una versione non compilata elencato poi basta disinstallare mysql2-0.3.11-x86-mingw32 - la versione compilata altro ...

installazione gem install mysql2 --platform=ruby. quello funzionerebbe.

Seguire questa guida per installare devkit http://rubyonwindowsguides.github.com/book/ch02-04.html.

Quindi riprovare.

+0

Grazie per la risposta. Si prega di consultare il mio aggiornamento. – Green

+0

Questo ha funzionato per me. Grazie mille :) –

2

Esattamente lo stesso comportamento quando provo ad installare Redmine su Windows XP

  • quando provo a fare il "rake generate_secret_token", ho ottenuto "non può caricare tale file - mysql2/2.0/mysql2 (LoadError) "
  • e quando provo a ricostruire mysql2 usando --platform = ruby, ho ricevuto lo stesso messaggio come verde.

per il momento, sono bloccato là ... ma se qualcuno ha qualcosa che mi consenta di andare avanti, sarà molto gradito. terrò informati così

Antoine

13

Ha avuto l'assolutamente stesso problema su Windows 7 x64 con Ruby 2.0.0 e DevKit 4.7.

I seguenti passaggi mi hanno aiutato.

  1. gem uninstall mysql2

  2. Scarica ultimo connettore MySQL da http://cdn.mysql.com/Downloads/Connector-C/mysql-connector-c-noinstall-6.0.2-win32.zip

  3. estrarlo in C: \ connettore-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"'

O ancora più breve:

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

+0

Grazie. Questo ha funzionato per me. –

+0

Sì, ha funzionato!Ma prima - devi usare ** cmd.exe **, non PowerShell! Secondo: a volte devi forzare la versione gem nel tuo ** Gemfile ** a, ad es. 0.3.13, poiché bundler sta installando la versione compilata 0.2.6-mingw ... – Gobol

+1

Usa seguente se sopra non funziona: - gem install mysql2 --platform = ruby ​​- '--with-mysql-lib = "C : \ connector-6.0.2 \ lib "--with-mysql-include =" C: \ connector-6.0.2 \ include " – RohitPorwal

2

Ho quasi fatto lo stesso cosa descritto da @odiszapc. Disinstallare vecchio gioiello, scaricare mysql-connector-c-noinstall, decomprimere, ma alla fine ho usato questo comando per costruire gemma origini:

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

(. Se si utilizza git-bash quindi è possibile utilizzare Unix sintassi directory stile)

+0

Nota: se si esegue l'installazione di bundle o l'aggiornamento del bundle, verrà reinstallata la versione di mysql2 gem di mingw. Devi "gem disinstallare" sempre ... – Zoltan

+1

Ho dovuto installare gem mysql2 --platform = ruby ​​- --with-opt-dir =/c/connector-6.0.2 --with-mysql-dir =/c/connector-6.0.2 ... perché la compilazione non è riuscita e ho notato che ci sono riferimenti a $ {mysql-dir}/include. –

2

Copia incolla da tale collegamento: https://github.com/brianmario/mysql2/issues/359. Ha funzionato per me.


Se dopo l'installazione del gioiello, si ottiene un errore:

"The specified module could not be found.
C:/Devel/Ruby200/lib/ruby/gems/2.0.0/gems/mysql2-0.3.11/lib/mysql2/mysql2.so"

che può essere risolto copiando libmysql.dll alla cartella bin di Ruby.