W moim pliku gemfile mam:
gem 'mysql2'
Moja baza danych.yml wygląda następująco:
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
Zabrakło mi zarówno bundle update
a bundle install
i moje pokazy Gemfile.lock mysql2.
Jednak po uruchomieniu rake db:migrate
otrzymuję ten komunikat zarówno na moim komputerze, jak i na serwerze przejściowym:
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).
.....
Aby upewnić się, że nie ma złej wersji mysql2 lub czegoś podobnego, zrobiłem bundle clean --force
i biegałem bundle install
i bundle update
znowu, a kiedy uruchamiam gem list
, widzę mysql2 (0.4.0)
i nie ma innych wersji.
Wszelkie pomysły będą mile widziane.
ROZWIĄZANIE
Obecnie jest to problem z Railsami 4.1.xi 4.2.x, zgodnie z tym zgłoszeniem błędu , zostanie on naprawiony w następnej wersji rails 4.2.x (autorstwo dcorr w komentarzach do linku).
W międzyczasie możesz to naprawić, przechodząc do wersji 0.3.18 mysql2, dodając ten wiersz do pliku gemfile:
gem 'mysql2', '~> 0.3.18'
źródło
bundle update mysql2
mysql2 (0.4.0)
to najnowsza wersja Ruby Gems bierze i jest już zainstalowana.gem 'mysql2', '~> 0.3.18'
w Gemfile.Odpowiedzi:
Jeszcze tylko aktualizacja - rozwiązanie w pytaniu jest poprawne.
Warto zwrócić uwagę na czwarty komentarz:
Udało mi się powiązać
Rails 4.2.4
z4-2-stable
oddziałem i uruchomić go z najnowszymimysql2
:źródło
Po prostu zrób:
gem 'mysql2', '~> 0.3.18'
ten klejnot działarails version 4.x.x
jeśli zostanie zainstalowana
gem 'mysql2', '~> 0.4.0'
, generuje błąd ładowania gem i powoduje problemy ze zgodnościąźródło
Ten problem został rozwiązany tutaj: https://github.com/brianmario/mysql2/issues/950
Gemfile:
Następnie uruchomić
bundle update rails mysql2
Obecnie używam mysql w wersji 8.0.11
źródło
Odpowiedź na to konkretne pytanie w odniesieniu do czasu publikacji i używanej wersji Railsów jest taka, że problem jest spowodowany wykonaniem a,
bundle update
a twoja wersja mysql2 została zaktualizowana do 0.4.x, która ma problem z niekompatybilnością z najnowszym ActiveRecord Railsów.Ponownie, proszę zauważyć, że NIE jest to rozwiązanie dla osób używających starszych wersji Rails / ActiveRecord.
Szybkim rozwiązaniem jest po prostu określenie
mysql2
wersji w pliku gem w następujący sposób:gem 'mysql2', '0.3.20'
Długim rozwiązaniem byłoby zaczekanie na aktualizację ActiveRecord lub zmianę w mysql2.
źródło
Jeśli możesz zaktualizować swoją wersję rails, zmień plik Gemfile na ten, a to rozwiąże problem bez obniżania wersji gem mysql2:
źródło
Jako kompletny początkujący nie wiedziałem, jak to zrobić, więc po prostu wykonałem test próbny i wreszcie uruchomiłem serwer, oto jak go uruchomiłem.
wejdź do pliku katalogu roboczego („work”), a stamtąd do pliku utworzonej aplikacji („sample_app”), która ma zainstalowaną mysql 2 przejdź do pliku gem („Gemfile”) edytuj gem „mysql2” na gem „mysql2”, „~> 0.3.18”
teraz wróć do cmd i uruchom polecenie „instalacja pakietu”.
więc katalog do edycji pliku uwzględniający powyższe pliki w nawiasach powinien być. „c \ work \ sample_app \ Gemfile”
mam nadzieję, że pomogłem.
źródło
Dzieje się tak zwykle, gdy na komputerze brakuje niektórych pakietów mysql. Czy otrzymujesz jakieś błędy
gem install mysql2
? Na jakim systemie operacyjnym pracujesz?Jeśli na Debianie lub Ubuntu, spróbuj
sudo apt-get install libmysqlclient-dev
.Upewnij się również, że klejnot nie jest umieszczony w
group
oświadczeniu w twoim Gemfile.źródło
Miałem ten sam problem, ale dodanie
source 'https://rubygems.org'
do góry pliku klejnotu rozwiązało problem.Kroki:
dodaj
source 'https://rubygems.org'
do swojego pliku gem. Skomentujmysql2 gem
i dodajgem 'mysql2', '~> 0.3.18'
Runbundle install
źródło
Spróbuj tego:
to polecenie zaktualizuje twój gem „mysql2” do najnowszej wersji (powinna być 0.3.17 lub wyższa) i uruchomi twój serwer rails.
źródło