Errore “… imansible caricare tale file – mysql2 / 2.0 / mysql2 (LoadError)”. Su Windows XP con Ruby 2.0.0

Il comando rails server genera questo errore.

 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) 

Uso Ruby 2.0.0 da RubyInstaller su Windows XP.

Ho capito qual è il problema ma non so come risolverlo. Il problema è che non esiste alcuna directory 2.0/ nella mysql2-0.3.11-x86-mingw32 . Questa è la gem che rails installa come dipendenza da 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 file 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 

È ovvio che prende l’attuale numero di versione di Ruby e lo usa come segmento del percorso per raggiungere un file mysql2 . In effetti è mysql2.so file mysql2.so . Mentre uso Ruby 2.0.0 il segmento path è 2.0 :

 mysql2/2.0/mysql2 

Ok, ora vediamo come si presenta la directory della mysql2-0.3.11-x86-mingw32 :

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

inserisci la descrizione dell'immagine qui

Nessuna directory 2.0/ .

Conosco il problema di libmysql.dll . C:\Ruby200\bin 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 con 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 tua risposta . Ho provato. Purtroppo 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:

Devi prima installare gli strumenti di sviluppo.

Ma ho installato DevKit completo, RubyInstaller lo installa. Non riesco a capire cos’altro ha bisogno.

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

Aveva lo stesso identico problema su Windows 7 x64 con Ruby 2.0.0 e DevKit 4.7.

I seguenti passaggi mi hanno aiutato.

  1. gem disinstallare mysql2

  2. Scarica l’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: \ connettore-6.0.2 \ include “–with-mysql-dir =” C: \ connettore-6.0.2 “‘

O ancora più corto:

gem install mysql2 –platform = ruby ​​- –with-opt-dir = “C: \ connector-6.0.2”

disinstallare mysql2-0.3.11-x86-mingw32 , gemme compilate prima che Ruby200 non funzioni. Devi compilarlo da solo. Se si esegue gem uninstall mysql2 e c’è una versione non compilata elencata quindi basta disinstallare mysql2-0.3.11-x86-mingw32 – la versione compilata altro …

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

Segui questa guida sull’installazione di devkit http://rubyonwindowsguides.github.com/book/ch02-04.html .

Quindi riprova.

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

  • quando provo a fare il “rake generate_secret_token”, ho ottenuto “imansible caricare tale file – mysql2 / 2.0 / mysql2 (LoadError)”
  • e quando provo a ribuild mysql2 usando –platform = ruby, ho ricevuto lo stesso messaggio di green.

per il momento, sono bloccato là … ma se qualcuno ha qualcosa che mi permetta di andare avanti, sarà molto gradito. Terrò anche informato

Antoine

Ho quasi fatto lo stesso cosa descritto da @odiszapc. Disinstallare old gem, scaricare mysql-connector-c-noinstall, decomprimere, ma alla fine ho usato questo comando per creare gem nativo:

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

(Se usi git-bash, puoi usare la syntax della directory di stile unix.)

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


Se dopo aver installato la gem, si ottiene un errore:

“Il modulo richiesto non può essere trovato.
C: /Devel/Ruby200/lib/ruby/gems/2.0.0/gems/mysql2-0.3.11/lib/mysql2/mysql2.so”

Questo può essere risolto copiando libmysql.dll nella cartella bin di Ruby.