2015-03-08 20 views
6

Stavo usando SQLite per il mio progetto Rails ma quando ho sentito che Heroku non supporta SQLite, sono passato a MYSQL.Ruby on Rails - impossibile caricare tale file - mysql2/2.2/mysql2 (LoadError)

Dopo il passaggio mio database, ho iniziato il mio server rotaie "rotaie s" ma mi dà il seguente errore:

C:\Sites\simple_cms>rails server 
C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/mysql2-0.3.18-x64-mingw32/lib/mysql2/mysql2.rb:2:in `require' 
: cannot load such file -- mysql2/2.2/mysql2 (LoadError) 
     from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/mysql2-0.3.18-x64-mingw32/lib/mysql2/mysql2.rb:2 
:in `<top (required)>' 
     from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/mysql2-0.3.18-x64-mingw32/lib/mysql2.rb:31:in `r 
equire' 
     from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/mysql2-0.3.18-x64-mingw32/lib/mysql2.rb:31:in `< 
top (required)>' 
     from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler/runtime.rb:76:in `requ 
ire' 
     from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler/runtime.rb:76:in `bloc 
k (2 levels) in require' 
     from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler/runtime.rb:72:in `each 
' 
     from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler/runtime.rb:72:in `bloc 
k in require' 
     from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler/runtime.rb:61:in `each 
' 
     from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler/runtime.rb:61:in `requ 
ire' 
     from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler.rb:134:in `require' 
     from C:/Sites/simple_cms/config/application.rb:7:in `<top (required)>' 
     from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks 
.rb:78:in `require' 
     from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks 
.rb:78:in `block in server' 
     from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks 
.rb:75:in `tap' 
     from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks 
.rb:75:in `server' 
     from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks 
.rb:39:in `run_command!' 
     from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/railties-4.2.0/lib/rails/commands.rb:17:in `<top 
(required)>' 
     from bin/rails:4:in `require' 
     from bin/rails:4:in `<main>' 

Questo è il mio Gemfile:

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' 
gem 'rails', '4.2.0' 
# Use mysql as the database for Active Record 
gem 'mysql2' 

Ho cercato a fondo, ho trovato alcune risposte ma non ha funzionato.

Ho incollato il mio file libmysql.dll da Program Files/MySQL Server 5.6 a Ruby/bin ma ancora senza fortuna. Ho eseguito i seguenti comandi:

gem uninstall mysql2 

gem install mysql2 --platform=ruby 

Ho seguito questo tutorial e ancora ottenuto lo stesso errore: Error "...cannot load such file -- mysql2/2.0/mysql2 (LoadError)". On Windows XP with Ruby 2.0.0

Io vi consiglio grato se qualcuno mi aiuterà fuori, in modo che possa distribuirlo a Heroku.

Grazie.

+0

Si è lo stesso errore - riferirà indietro se fix. –

risposta

9

Il problema è che la gemma mysql2 non si installa con le sue dipendenze native. Nelle precedenti versioni di Ruby, questo avrebbe innescato l'errore unable to build native gem extension:

enter image description here

Qualcosa è cambiato in Ruby 2.2 in modo che è possibile installare la gemma senza costruire l'estensione nativa. Ciò non significa tuttavia che il problema sia stato risolto, pertanto è necessario assicurarsi di installare la gemma con le dipendenze appropriate.

Tutorial:

(nota la versione di Ruby - se si sta utilizzando 64 bit, scaricare la versione a 64 bit)
  1. Download C-Connector from MYSQL

  2. installare la cartella
  3. Unzip/MYSQL C-Connector sul vostro disco rigido (non hanno alcuna spazi nel percorso)

  4. Eseguire il seguente comando: gem install mysql2 --platform=ruby -- '--with-mysql-dir="C:/your-mysql-connector-path"'

  5. Questo dovrebbe installare il gioiello con i file necessari

  6. Quindi è possibile copiare libmysql.dll da C:/your-mysql-connector-path -> c:/il-tuo-ruby-install/bin`

La differenza tra questo installazione e il precedente sarà che questo dovrebbe menzionare che le estensioni gem native sono state installate (This could take a while), il che suggerisce che Ruby sta guardando la libreria.

Questa volta, se si installa correttamente, dovrebbe funzionare per voi.

-

Se si sta ancora vedendo un errore, dovrete disinstallare le versioni esistenti della mysql2 gemma sul sistema:

enter image description here

Se stai ricevendo un errore, devi solo digitare gem unstally mysql2, selezionare all e quindi ripetere i passaggi sopra.

+0

Dando questo metodo, ma si getta indietro: opzione non valida: --with-mysql-dir = C: –

+1

Devi solo incapsulare il percorso tra virgolette, come da mia risposta –

+0

Ottengo 'opzione non valida' indipendentemente dalle virgolette . La risposta in generale non cambia affatto. –

2

Ho appena avuto loro lo stesso problema dopo l'aggiornamento da Ruby 2.1.5 a 2.2.1. Il problema sembra essere la gemma mysql2 utilizzata da Rails come associazione a libmysql. Apparentemente non supporta il ramo Ruby 2.2 ma solo 2.0 e 2.1.

+0

Ci sto lavorando su 'Ruby 2.2.1' –

+3

Con quale tipo di voodoo? –

1

Ho avuto lo stesso problema, quindi sono passato a utilizzare RubyInstaller. Non ho più il problema.

3

Nel passaggio 3 in precedenza ho dovuto utilizzare una coppia extra di "-" e nessuna virgoletta attorno al percorso.

gem install mysql2 -- --with-mysql-dir=C:\mysql-connector-dir 

sto usando Win 7

Problemi correlati