Gem :: LoadError для гема mysql2, но он уже находится в Gemfile

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

Эта ошибка произошла при загрузке следующих файлов:

active_record/base

Это ошибка, которую я получаю при запуске сервера rails.

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

Я сделал bundle installи попытался перезапустить сервер, но все равно получаю ошибку.

Mysoulisinseoul
источник
Вы запустили bundleпосле добавления гема и перезапустили сервер?
Bachan Smruty 08
@BachanSmruty: Да, я это сделал.
Mysoulisinseoul
Это в развертывании? Вы бежали?bundle install --deployment
j-dexx 08

Ответы:

247

Если у вас возникла эта ошибка при обновлении до rails 4.2.4 (также с rails 4.1.5), попробуйте использовать эту версию mysql2:

gem 'mysql2', '~> 0.3.18'

По-видимому, mysql2 все еще несовместим с более новой версией rails, потому что rails 4.2.4 довольно новый, когда я ответил на этот вопрос 8 сентября 2015 года, поэтому используйте указанную выше строку в своем файле Gem и запустите:

bundle install 

Тебе должно быть хорошо идти

Хасан Азими
источник
2
в файле msyql2_adapter.rb я нахожу следующие коды: gem 'mysql2', '~> 0.3.13' require 'mysql2'. Это может быть причиной, по которой mysql2 версии 4.xx по умолчанию не работает
Оскар Цзян,
27

У меня это сработало, когда я указал версию гема mysql2 перед самой новой (0.4.0). По какой-то причине возникла проблема с Rails 4.2.4 и этим гемом 0.4.0. Итак, чтобы решить проблему, я просто указал предыдущий выпущенный гем: 0.3.20, и он отлично работал у меня!

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

Вы можете проверить все версии гемов здесь: https://rubygems.org/gems/mysql2/versions

rom5jp
источник
16

Изменить на

gem 'mysql2', '~> 0.3.18'

в вашем Gemfile.

В этой ветке официального mysql2 Github говорится об этом. Вам нужно объявить этот номер версии, если вы используете rails версии 4.xx

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

Тогда беги bundle update mysql2.

suga_shane
источник
2
Спасибо! Если быть точным, вы не хотите, так bundle updateкак это обновит все ваши драгоценные камни. Команда есть bundle update mysql2. Может показаться очевидным, но это неправильная команда и может иметь непредвиденные последствия. (Чтобы вернуться bundle update, бегите git checkout -- Gemfile.lock)
Ник
8

Я получил ту же ошибку после обновления до Rails 4.1, и мне удалось решить ее, обновив mysql2. Запустите это в папке вашего приложения rails:

$ bundle update mysql2
Вало
источник
8

Эта проблема может возникнуть, если вы используете более новую версию rails> 4

Проделайте эти два простых шага, это сработает. Откройте свой Gemfile и найдите строку ниже

gem 'mysql2'

замените эту строку конкретной версией mysql, как показано ниже

gem 'mysql2', '~> 0.3.18'

Теперь остановите сервер и запустите пакет

bundle install

Теперь перезапустите ваш сервер. Он должен работать.

rails s
Прабхакар Ундурти
источник
7

Будучи новичком в рубине, я не мог понять строку gem 'mysql2', '~> 0.3.18'

это просто означает, что перейдите в папку проекта rails, а затем появится строка для mysql2, она будет похожа на 0.4 *, поэтому вы можете изменить ее на gem 'mysql2', '~> 0.3.18'

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

Муааз Салагар
источник
5

Он не загружает гем mysql2, потому что новая версия гема mysql2 (0.4.1) не может загрузить mysql2_adaptor. Это работает для меня.

gem 'mysql2', '~> 0.3.13'

и беги

bundle install
сушилпрдж
источник
2

У меня была такая же ошибка, потому что для Rails 4.1 требуется минимальная версия mysql2 0.3.13, а максимальная совместимость с Windows - версия 0.3.11.

Итак, я отредактировал файл c:\RailsInstaller\Ruby1.9.3\lib\ruby\gems\1.9.1\gems\activerecord-4.1.1\lib\active_record\connection_adapters\mysql2_adapter.rbи изменил строку gem 'mysql2', '~> 0.3.13'на gem 'mysql2', '~> 0.3.11', и до сих пор это работает.

Лев Лукомский
источник
1

Он не загружает гем mysql2, потому что новая версия гема mysql2 (> = 0.4.0) не может загрузить mysql2_adaptor. Вы можете попробовать это?

gem 'mysql2', '~> 0.3.13'

Надеюсь, это должно сработать.

Нирадж Кумар
источник
0

Я решил проблему, установив локальный гем mysql2 (gem install mysql2, bundle install) и добавив следующую строку в Gemfile:

gem 'mysql2'

Установка адаптера mysql2 в database.yml

adapter: mysql2

тоже было важно!

атомный кодировщик
источник
0

Я совершенно не знаком с Ruby on Rails и веб-сайтами, но слышал, что у меня сработало.

Мне пришлось изменить свой gemfile, gem 'mysql2' на gem 'mysql2', '~> 0.3.13', затем в рельсах я набрал bundle install, затем я попробовал rails s и получил ошибки, поэтому я попытался обновить пакет mysql2, затем набрал рельсы рельсы с, и это сработало

Мэтт Пэпер
источник
0

Решил проблему, установив libmysqlclient-dev. sudo aptitude установить libmysqlclient-dev, а затем запустить пакет.

Фабио Коэльо
источник
-1

Я ранее устанавливал mysql2 0.4.5, но это вызывало эту ошибку, поэтому я установил другую версию mysql2:

gem install mysql2 --version 0.3.20

Надеюсь, это решит вашу проблему.

Прашант Чоудхари
источник