Rails 4 - Gem :: LoadError: указан mysql2 для адаптера базы данных, но гем не загружен

В моем гемфайле есть:

gem 'mysql2'

Моя database.yml выглядит следующим образом:

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

Я запустил и bundle update, и bundle install, и мой Gemfile.lock показывает mysql2.

Однако когда я запускаю rake db:migrate, я получаю это как на моем компьютере, так и на промежуточном сервере:

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).
.....

Просто чтобы убедиться, что это не плохая версия mysql2 или чего-то еще, я сделал bundle clean --force и снова запустил bundle install и bundle update, а когда я запускаю gem list, я вижу mysql2 (0.4.0) и никаких других версий.

Любые идеи будут очень признательны.


РЕШЕНИЕ

В настоящее время это проблема с Rails 4.1.x и 4.2.x, согласно этому отчету об ошибке, это будет исправлено в следующем выпуске rails 4.2.x (ссылка на dcorr указана в комментариях).

А пока вы можете исправить это, выполнив пониженную версию mysql2 до версии 0.3.18, добавив эту строку в свой гем-файл:

gem 'mysql2', '~> 0.3.18'

person newUserNameHere    schedule 08.09.2015    source источник
comment
Попробуйте bundle update mysql2   -  person Pavan    schedule 08.09.2015
comment
Я тоже пробовал это. Не сработало. Судя по тому, что я вижу, mysql2 (0.4.0) - это новейшая версия ruby ​​gems, которая уже установлена.   -  person newUserNameHere    schedule 08.09.2015
comment
Вот решение: gem 'mysql2', '~> 0.3.18' в Gemfile.   -  person newUserNameHere    schedule 08.09.2015
comment
Это не ошибка mysql2, это проблема с требованием адаптера ActiveRecord: github. com / rails / rails / issues / 21544. Это исправлено в мастере rails: github.com/rails/rails/commit/.   -  person dcorr    schedule 08.09.2015
comment
@Pavan Замечательный maahn !! _ / _   -  person Varun    schedule 16.09.2015
comment
Если он исправлен в мастере Rails, можем ли мы извлечь его из URL-адреса репозитория Rails на github, чтобы получить эту версию?   -  person Richard Peck    schedule 19.09.2015
comment
Ваше решение должно быть размещено как ответ на ваш собственный вопрос, а не как редактирование.   -  person OneHoopyFrood    schedule 31.12.2015


Ответы (10)


Еще одно обновление - решение вопроса правильное.

Обратите внимание на 4-й комментарий:

Это не ошибка mysql2, это проблема с требованием адаптера ActiveRecord: http://github.com/rails/rails/issues/21544. Это исправлено в мастере рельсов: https://github.com/rails/rails/commit/5da5e3772c3259 / а>

Мне удалось привязать Rails 4.2.4 к ветке 4-2-stable и заставить ее работать с последней mysql2:

введите описание изображения здесь

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'
person Richard Peck    schedule 19.09.2015
comment
Если скорость является приоритетом, было немного быстрее поднять mysql2 до «0.3.20» вместо закрепления рельсов «4.2.4» в ответвлении: «4-2-stable». - person seanriordan08; 26.01.2016
comment
Трудно поверить, что у mysql gem так много скупых проблем с ошибками по сравнению с postgreSQL T__T - person newBike; 22.04.2016
comment
Это среда Windows - то же самое с Imagemagick и т. Д. Вы должны использовать внешние зависимости, а поскольку в Windows нет центрального репозитория для них, это становится сложно - person Richard Peck; 22.04.2016
comment
А что насчет Rails 5? - person Richard Peck; 05.04.2017
comment
@RichardPeck У меня проблема с Rails 5.0.3 - person garci560; 17.05.2017
comment
Работает с Rails 5.1 - person Richard Peck; 18.05.2017

Просто сделайте:

gem 'mysql2', '~> 0.3.18' этот драгоценный камень работает с rails version 4.x.x

при установке gem 'mysql2', '~> 0.4.0' возникает ошибка загрузки гемов и проблемы совместимости

person Kaleem Ullah    schedule 16.09.2015
comment
Чисто, просто и лаконично. Спасибо! - person Am33d; 17.07.2018
comment
Работал у меня @kaleem - person khalidh; 04.09.2018


Ответ на этот конкретный вопрос относительно того, когда он был опубликован и какая версия Rails используется, заключается в том, что проблема вызвана выполнением bundle update и обновлением вашей версии mysql2 до 0.4.x, который имеет проблему несовместимости с последней версией Rails ActiveRecord.

Опять же, обратите внимание, что это НЕ решение для людей, использующих старые версии Rails / ActiveRecord.

Быстрое решение - просто указать версию mysql2 в вашем гем-файле следующим образом:

gem 'mysql2', '0.3.20'

Долгим решением было бы дождаться обновления ActiveRecord или каких-либо изменений в mysql2.

person Joshua F. Rountree    schedule 16.09.2015

Если вы можете обновить свою версию rails, измените свой Gemfile на это, и это решит проблему без понижения версии gem mysql2:

gem 'rails', '4.2.6'
person Omac    schedule 02.04.2016

Как полный новичок, я запутался в том, как это сделать, поэтому я просто провел пробную проверку и, наконец, получил свой сервер, вот как я получил его.

войдите в файл рабочего каталога ("работа") и оттуда войдите в файл созданного вами приложения ("sample_app"), в котором установлен mysql 2, перейдите в файл gem ("Gemfile") отредактируйте gem 'mysql2 ' в gem' mysql2 ',' ~> 0.3.18 '

теперь вернитесь в cmd и запустите команду "bundle install".

так что каталог для редактирования файла с учетом вышеупомянутых файлов в скобках должен быть. "c \ work \ sample_app \ Gemfile"

надеюсь, я был чем-то полезным.

person avinash v p    schedule 03.02.2016

Обычно это происходит, когда на вашем компьютере отсутствуют некоторые пакеты mysql. Вы получаете сообщения об ошибках от gem install mysql2? На какой ОС вы работаете?

Если вы используете debian или ubuntu, попробуйте sudo apt-get install libmysqlclient-dev.

Также убедитесь, что драгоценный камень не помещен в оператор group в вашем Gemfile.

person The F    schedule 08.09.2015
comment
+1 за помощь. Однако у меня уже есть libmysqlclient-dev, и драгоценный камень не находится внутри оператора группы. Странно то, что он отлично работает с другими моими проектами, только не с этим. Кроме того, это не новая установка моей ОС. Я уже какое-то время ничего не менял в своей среде. То же самое и с промежуточным сервером, где я наблюдаю те же проблемы. - person newUserNameHere; 08.09.2015

Была такая же проблема, но добавление source 'https://rubygems.org' в начало файла gem решило проблему.

Шаги:

добавьте source 'https://rubygems.org' в свой файл драгоценного камня. Закомментируйте mysql2 gem и добавьте gem 'mysql2', '~> 0.3.18' Выполнить bundle install

person Mr94    schedule 09.03.2016

попробуй это:

bundle update mysql2

эта команда обновит ваш гем mysql2 до последней версии (должна быть 0.3.17 или выше) и запустит ваш сервер rails.

person mmike    schedule 04.07.2016

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

Попробуй это. Это устранит ошибку загрузки mysql2.

person Nithin    schedule 23.04.2021