Gem :: LoadError dla mysql2 gem, ale jest już w Gemfile

103
Gem::LoadError
Specified 'mysql2' for database adapter, but the gem is not loaded.
Add `gem 'mysql2'` to your Gemfile

Ten błąd wystąpił podczas ładowania następujących plików:

active_record/base

To jest błąd, który otrzymuję na uruchomionym serwerze railsowym.

The mysql2 gem has been added to the Gemfile as well.

Skończyłem bundle installi próbowałem zrestartować serwer, ale nadal pojawia się błąd.

Mysoulisinseoul
źródło
Biegałeś bundlepo dodaniu klejnotu i zrestartowaniu serwera?
Bachan Smruty
@BachanSmruty: Tak, zrobiłem to.
Mysoulisinseoul
Czy to jest wdrażane? Czy uruchomićbundle install --deployment
j-dexx

Odpowiedzi:

247

Jeśli masz ten błąd podczas aktualizacji do rails 4.2.4 (także z rails 4.1.5), spróbuj użyć tej wersji mysql2:

gem 'mysql2', '~> 0.3.18'

Najwyraźniej mysql2 nadal nie jest kompatybilny z nowszą wersją railsów, ponieważ rails 4.2.4 są całkiem nowe jak na to pytanie 8 września 2015 r. Więc użyj powyższej linii w swoim pliku Gem i uruchom:

bundle install 

Powinieneś być gotowy do drogi

Hassan Azimi
źródło
2
w msyql2_adapter.rb, znajdę kody poniżej: gem 'mysql2', '~> 0.3.13' require 'mysql2' To mightbe powód dlaczego wersja domyślna mysql2 4.xx nie zadziała
Oscar Jiang
27

U mnie zadziałało, gdy podałem wersję gem mysql2 przed najnowszą (0.4.0). Z jakiegoś powodu jest problem z Railsami 4.2.4 i tym gemem 0.4.0. Tak więc, aby rozwiązać problem, właśnie wskazałem poprzedni wydany klejnot: 0.3.20 i działał dobrze!

gem 'mysql2', '~> 0.3.20'
bundle install

Możesz sprawdzić wszystkie wersje klejnotów tutaj: https://rubygems.org/gems/mysql2/versions

rom5jp
źródło
16

Zmień na

gem 'mysql2', '~> 0.3.18'

w twoim Gemfile.

Ten wątek na oficjalnym Github mysql2 mówi, żeby to zrobić. Musisz zadeklarować ten numer wersji, jeśli używasz railsów w wersji 4.xx

https://github.com/brianmario/mysql2/issues/675

Następnie biegnij bundle update mysql2.

suga_shane
źródło
2
Dziękuję Ci! Mówiąc dokładniej, nie chcesz, bundle updateponieważ zaktualizuje to wszystkie twoje klejnoty. Polecenie jest bundle update mysql2. Może wydawać się oczywiste, ale jest to zła komenda i może mieć niezamierzone konsekwencje. (Aby powrócić bundle update, biegnij git checkout -- Gemfile.lock)
Nick
8

Otrzymałem ten sam błąd po aktualizacji do Rails 4.1 i udało mi się go rozwiązać, aktualizując mysql2. Uruchom to w folderze aplikacji railsów:

$ bundle update mysql2
valo
źródło
8

Ten problem może wystąpić, jeśli używasz nowszej wersji szyn> 4

Wykonaj te dwa proste kroki, zadziała. Otwórz swój plik Gemfile i znajdź poniższą linię

gem 'mysql2'

zastąp tę linię konkretną wersją mysql, jak poniżej

gem 'mysql2', '~> 0.3.18'

Teraz zatrzymaj serwer i uruchom pakiet

bundle install

Teraz zrestartuj serwer. Powinno działać.

rails s
Prabhakar Undurthi
źródło
7

Będąc początkującym w Ruby nie mogłem znaleźć linii gem „mysql2”, „~> 0.3.18”

oznacza to po prostu, że przejdź do folderu projektu rails, a następnie pojawi się linia dla mysql2 o wartości 0.4 *, więc możesz ją zmienić na gem 'mysql2', '~> 0.3.18'

a ponieważ mamy nową definicję, musimy odbudować zależność, aby wykonać to proste polecenie, jak wyjaśniono w górnej instalacji pakietu

Muaaz salagar
źródło
5

Nie ładuje gem mysql2, ponieważ nowa wersja gem mysql2 (0.4.1) nie może załadować mysql2_adaptor. To działa dla mnie.

gem 'mysql2', '~> 0.3.13'

i biegnij

bundle install
sushilprj
źródło
2

Miałem ten sam błąd, a to dlatego, że Rails 4.1 wymaga minimum mysql2 w wersji 0.3.13, a maksymalna kompatybilność z Windows to 0.3.11.

Więc wyedytowałem plik c:\RailsInstaller\Ruby1.9.3\lib\ruby\gems\1.9.1\gems\activerecord-4.1.1\lib\active_record\connection_adapters\mysql2_adapter.rbi zmieniłem wiersz gem 'mysql2', '~> 0.3.13'na gem 'mysql2', '~> 0.3.11', i jak na razie działa.

Lev Lukomsky
źródło
1

Nie ładuje gem mysql2, ponieważ nowa wersja mysql2 (> = 0.4.0) gem nie może załadować mysql2_adaptor. Możesz tego spróbować?

gem 'mysql2', '~> 0.3.13'

Miejmy nadzieję, że to powinno działać.

Neeraj Kumar
źródło
0

Rozwiązałem problem, instalując lokalny plik mysql2 gem (instalacja gem mysql2, instalacja pakietu) i dodając następujący wiersz do pliku Gemfile:

gem 'mysql2'

Ustawienie adaptera mysql2 w database.yml

adapter: mysql2

był też ważny!

atomiccoder
źródło
0

Jestem nowicjuszem w Ruby on Rails i stronach internetowych, ale słyszę, co zadziałało.

Musiałem zmienić mój gemfile, gem 'mysql2' na gem 'mysql2', '~> 0.3.13' potem w railsach wpisałem instalację pakietu, a następnie wypróbowałem railsy i otrzymałem błędy, więc spróbowałem zaktualizować pakiet mysql2, a następnie wpisano w railsach szyny i zadziałało

matowa serwetka
źródło
0

Rozwiązałem problem, instalując libmysqlclient-dev. sudo aptitude install libmysqlclient-dev, a później uruchom pakiet.

Fábio Coelho
źródło
-1

Wcześniej zainstalowałem mysql2 0.4.5, ale to dawało mi ten błąd, więc zainstalowałem inną wersję mysql2 przez:

gem install mysql2 --version 0.3.20

Mam nadzieję, że to rozwiązuje twój problem.

Prashant Choudhary
źródło