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

В моем gemfile я:

gem 'mysql2'

My 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 в комментариях к ссылке).

В то же время вы можете исправить, понизив до версии 0.3.18 mysql2, добавив эту строку в свой gemfile:

gem 'mysql2', '~> 0.3.18'

Ответ 1

Простое обновление - правильное решение в вопросе.

4-й комментарий заслуживает внимания:

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

Мне удалось привязать 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'

Ответ 2

Просто выполните:

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

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

Ответ 3

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

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

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

gem 'mysql2', '0.3.20'

Большим решением будет ждать обновления ActiveRecord или что-то в mysql2 для изменения.

Ответ 4

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

gem 'rails', '4.2.6'

Ответ 5

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

Если на debian или ubuntu попробуйте sudo apt-get install libmysqlclient-dev.

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

Ответ 6

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

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

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

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

надеюсь, что я помог.

Ответ 7

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

Шаги:

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

Ответ 8

попробуйте следующее:

bundle update mysql2

эта команда обновит ваш камень "mysql2" до последней версии (должно быть 0,3.17 или выше) и запустит сервер ваших рельсов.