it-swarm.com.ru

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

В моем gemfile у меня есть:

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, добавив следующую строку в ваш gemfile:

gem 'mysql2', '~> 0.3.18'
151
newUserNameHere

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

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

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

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

 enter image description here

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'
47
Richard Peck

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

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

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

66
Kaleem Ullah

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

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

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

gem 'mysql2', '0.3.20'

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

8
Joshua F. Rountree

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

gem 'Rails', '4.2.6'
7
Omac

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

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

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

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

надеюсь, что я был какой-то помощи.

5
avinash v p

Эта проблема была решена здесь: https://github.com/brianmario/mysql2/issues/950

Для Rails 4.x, пожалуйста, прикрепите gem к mysql2 '~> 0.4.0', чтобы избежать обновления 0.5.x.

Gemfile:

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

Затем запустите bundle update Rails mysql2

Я в настоящее время использую MySQL v 8.0.11

5
Abram

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

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

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

4
The F

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

Шаги:

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

1
Mr94

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

bundle update mysql2

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

0
mmike