Rails 4 - Gem :: LoadError: 'mysql2' specificato per l'adattatore del database, ma la gemma non viene caricata


150

Nel mio gemfile ho:

gem 'mysql2'

Il mio database.yml è il seguente:

default: &default
  adapter: mysql2
  database: <%= ENV['db_name'] %>
  username: <%= ENV['db_user'] %>
  password: <%= ENV['db_pass'] %>
  host:     <%= ENV['db_host'] %>
  pool: 32
  socket:   <%= ENV['socket'] %>

development:
  <<: *default

production:
  <<: *default

Ho eseguito entrambi bundle updatee bundle installe il mio Gemfile.lock mostra mysql2.

Tuttavia quando corro rake db:migrateottengo questo sia sul mio computer che sul server di gestione temporanea:

myproject.com(master)$ rake db:migrate
WARNING: Use strings for Figaro configuration. 10000012508 was converted to "10000012508".
WARNING: Use strings for Figaro configuration. 860526407370038 was converted to "860526407370038".
rake aborted!
Gem::LoadError: Specified 'mysql2' for database adapter, but the gem is not loaded. Add `gem 'mysql2'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord).
.....

Solo per essere sicuro che non esistesse una versione errata di mysql2 o qualcosa del genere, l'ho fatto bundle clean --forcee funzionato bundle installe bundle updateancora e quando corro gem listvedo mysql2 (0.4.0)e nessun'altra versione.

Qualsiasi idea sarebbe apprezzata.


SOLUZIONE

Attualmente è un problema con Rails 4.1.xe 4.2.x, per questo bug report , sarà risolto nella prossima versione di rails 4.2.x (credito a dcorr nei commenti per il link).

Nel frattempo, puoi risolvere il problema eseguendo il downgrade alla versione 0.3.18 di mysql2 aggiungendo questa riga al tuo gemfile:

gem 'mysql2', '~> 0.3.18'

1
Provabundle update mysql2
Pavan,

Ci ho provato anche io. Non ha funzionato Da quello che vedo mysql2 (0.4.0)è la versione più recente che prenderanno le gemme di rubino ed è già installata.
newUserNameHere

12
Ecco la soluzione: gem 'mysql2', '~> 0.3.18'in Gemfile.
newUserNameHere

6
Questo non è un bug con mysql2, è un problema con i requisiti nell'adattatore ActiveRecord: github.com/rails/rails/issues/21544 . Questo
problema

@Pavan Awsome maahn !! _ / _
Varun,

Risposte:


50

Solo un ulteriore aggiornamento: la soluzione nella domanda è corretta.

Vale la pena notare il 4 ° commento:

Questo non è un bug con mysql2, è un problema con i requisiti nell'adattatore ActiveRecord: http://github.com/rails/rails/issues/21544 . Questo problema è stato risolto in rails master: https://github.com/rails/rails/commit/5da5e3772c32593ecf2f27b8865e81dcbe3af692

Sono stato in grado di legare Rails 4.2.4alla 4-2-stablefiliale e farlo funzionare con le ultime mysql2:

inserisci qui la descrizione dell'immagine

gem 'rails', '~> 4.2.4', git: "git://github.com/rails/rails.git", branch: '4-2-stable'
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw] #-> Rails 4.1+

#DB
gem 'mysql2'

Se la velocità è una priorità, è stato un po 'più veloce portare mysql2 a' 0.3.20 'invece di fissare le guide' 4.2.4 'alla diramazione:' 4-2-stabile '.
seanriordan08,

è difficile credere che la gemma mysql abbia così tanti problemi avari rispetto al postgreSQL T__T
newBike

È l'ambiente Windows - è lo stesso con Imagemagick ecc. Devi usare dipendenze esterne e poiché Windows non ha un repository centrale per loro, diventa complicato
Richard Peck,

Che dire di Rails 5?
Richard Peck,

@RichardPeck Ho questo problema con Rails 5.0.3
garci560

67

Basta fare:

gem 'mysql2', '~> 0.3.18' questa gemma funziona con rails version 4.x.x

se installato gem 'mysql2', '~> 0.4.0'produce errori di caricamento gem e causa problemi di compatibilità


Pulito, semplice e conciso. Grazie!
Am33d,

Ha funzionato per me @kaleem
khalidh

9

Questo problema è stato risolto qui: https://github.com/brianmario/mysql2/issues/950

Per Rails 4.x, aggiungi la gemma a mysql2 '~> 0.4.0' per evitare l'aggiornamento 0.5.x.

Gemfile:

gem 'rails', '4.2.8'
gem 'mysql2', '~> 0.4.0'

Quindi corri bundle update rails mysql2

Attualmente sto usando mysql v 8.0.11


8

La risposta a questa particolare domanda relativa a quando è stata pubblicata e la versione di Rails in uso è che il problema è causato dal fare una bundle updatee la tua versione di mysql2 si aggiorna a 0.4.x che ha un problema di incompatibilità con l'ultimo Rails ActiveRecord.

Ancora una volta, si noti che questa NON è la soluzione per le persone che utilizzano versioni precedenti di Rails / ActiveRecord.

La soluzione rapida è semplicemente specificare la mysql2versione nel tuo gemfile come segue:

gem 'mysql2', '0.3.20'

La lunga soluzione consisterebbe nell'attendere che cambi un aggiornamento di ActiveRecord o qualcosa in mysql2.


7

Se riesci ad aggiornare la versione delle tue rotaie, modifica il Gemfile in questo e risolverà il problema senza eseguire il downgrade della versione gemq di mysql2:

gem 'rails', '4.2.6'

5

Come principiante completo mi sono confuso su come farlo, quindi ho appena fatto un controllo di prova e finalmente ho fatto funzionare il mio server, ecco come l'ho fatto funzionare.

entra nel file della directory di lavoro ("lavoro") e da lì entra nel file dell'app che hai creato ("sample_app") che ha installato mysql 2 vai al file gem ("Gemfile") modifica gem 'mysql2' in gem 'mysql2', '~> 0.3.18'

ora torna a cmd ed esegui il comando "bundle install".

quindi la directory per modificare il file tenendo in considerazione i file sopra tra parentesi dovrebbe essere. "C \ lavori \ sample_app \ Gemfile"

spero di essere stato di qualche aiuto.


4

Questo di solito accade quando mancano alcuni pacchetti mysql sul tuo computer. Ricevi errori da gem install mysql2? Su quale sistema operativo stai lavorando?

Se su debian o ubuntu provare sudo apt-get install libmysqlclient-dev.

Assicurati anche che la gemma non sia inserita in groupun'istruzione nel tuo Gemfile.


+1 per l'assistenza. Tuttavia, ho già libmysqlclient-dev e la gemma non si trova all'interno di un'istruzione di gruppo. La cosa strana è che funziona benissimo sui miei altri progetti, ma non su questo. Inoltre, questa non è una nuova installazione del mio sistema operativo, non ho cambiato nulla nel mio ambiente da un po 'di tempo. E lo stesso vale per il server di gestione temporanea, in cui riscontro anche gli stessi problemi.
newUserNameHere

1

Ha avuto lo stesso problema ma l'aggiunta source 'https://rubygems.org'alla parte superiore del file gem ha risolto il problema.

passi:

aggiungi source 'https://rubygems.org'al tuo file gem. Commenta mysql2 geme aggiungi gem 'mysql2', '~> 0.3.18' Eseguibundle install


0

prova questo:

bundle update mysql2

questo comando aggiornerà la tua gemma 'mysql2' all'ultima versione (dovrebbe essere la 0.3.17 o successiva) e avvierà il tuo server rails.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.