Gem :: LoadError para mysql2 gem, mas já está em Gemfile


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

Este erro ocorreu ao carregar os seguintes arquivos:

active_record/base

Este é o erro que recebo ao executar o servidor Rails.

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

Já fiz bundle installe tentei reiniciar o servidor, mas ainda recebo o erro.


Você executou bundleapós adicionar a gema e reiniciou o servidor?
— Bachan Smruty

@BachanSmruty: Sim, eu fiz isso.
— Mysoulisinseoul

Isso está em implantação? Você já correubundle install --deployment
— j-dexx de

Respostas:


247

Se você tiver este erro ao atualizar para o rails 4.2.4 (também com o rails 4.1.5), tente usar esta versão do mysql2:

gem 'mysql2', '~> 0.3.18'

Aparentemente, o mysql2 ainda não é compatível com a versão mais recente do rails porque o rails 4.2.4 é muito novo quando eu respondi essa pergunta em 8 de setembro de 2015, então use a linha acima em seu arquivo Gem e execute:

bundle install 

Você deve estar pronto para ir


2
no msyql2_adapter.rb, encontro os códigos abaixo: gem 'mysql2', '~> 0.3.13' require 'mysql2' esta pode ser a razão pela qual o mysql2 versão 4.xx padrão não funcionará
— Oscar Jiang

27

Funcionou para mim quando especifiquei uma versão gem do mysql2 antes da mais nova (0.4.0). Por alguma razão, há um problema com Rails 4.2.4 e aquele gem 0.4.0. Então, para resolver o problema, eu apenas especifiquei a gema anterior lançada: 0.3.20 e funcionou bem para mim!

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

Você pode verificar todas as versões de gems aqui: https://rubygems.org/gems/mysql2/versions


16

Mudar para

gem 'mysql2', '~> 0.3.18'

em seu Gemfile.

Este tópico no Github oficial do mysql2 diz para fazer isso. Você precisa declarar o número da versão se for rails versão 4.xx

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

Então corra bundle update mysql2.


2
Obrigado! Para ser preciso, você não quer, bundle updatepois isso irá atualizar todas as suas joias. O comando é bundle update mysql2. Pode parecer óbvio, mas é o comando errado e pode ter consequências indesejadas. (Para reverter bundle update, execute git checkout -- Gemfile.lock)
— Nick

8

Recebi o mesmo erro após uma atualização para Rails 4.1 e consegui resolvê-lo atualizando mysql2. Execute isto na pasta do seu aplicativo Rails:

$ bundle update mysql2

8

Este problema pode ocorrer se você estiver usando uma versão mais recente do rails> 4

Faça estes dois passos simples, vai funcionar. Abra seu Gemfile e encontre a linha abaixo

gem 'mysql2'

substitua essa linha por uma versão específica do mysql como abaixo

gem 'mysql2', '~> 0.3.18'

Agora pare o servidor e execute o pacote

bundle install

Agora reinicie seu servidor. Deve funcionar.

rails s

7

Sendo iniciante no ruby, não consegui descobrir a linha gem 'mysql2', '~> 0.3.18'

significa simplesmente ir para a pasta do projeto rails e então há uma linha para mysql2 que será como 0.4 * então você pode alterá-lo para gem 'mysql2', '~> 0.3.18'

e como temos uma nova definição, temos que reconstruir a dependência para fazer aquele comando simples, conforme explicado na instalação do pacote superior


5

Ele não carrega mysql2 gem porque a nova versão do mysql2 (0.4.1) gem não pode carregar o mysql2_adaptor. Isso está funcionando para mim.

gem 'mysql2', '~> 0.3.13'

e corra

bundle install

2

Eu tive o mesmo erro e isso ocorre porque Rails 4.1 requer no mínimo mysql2 versão 0.3.13, e o máximo compatível com Windows é a versão 0.3.11.

Então editei o arquivo c:\RailsInstaller\Ruby1.9.3\lib\ruby\gems\1.9.1\gems\activerecord-4.1.1\lib\active_record\connection_adapters\mysql2_adapter.rbe mudei a linha gem 'mysql2', '~> 0.3.13'para gem 'mysql2', '~> 0.3.11', e funciona até agora.



1

Ele não carrega mysql2 gem porque a nova versão do mysql2 (> = 0.4.0) gem não pode carregar o mysql2_adaptor. Você pode tentar isso?

gem 'mysql2', '~> 0.3.13'

Esperançosamente, deve funcionar.


0

Resolvi o problema, instalando o local gem mysql2 (gem install mysql2, bundle install) e adicionando a seguinte linha ao Gemfile:

gem 'mysql2'

Configurando o adaptador mysql2 em database.yml

adapter: mysql2

também foi importante!


0

Sou totalmente novo em Ruby on Rails e sites, mas ouço o que funcionou para mim.

Eu tive que mudar meu gemfile, gem 'mysql2' para gem 'mysql2', '~> 0.3.13' então em rails eu digitei bundle install e tentei rails se tive erros, então tentei bundle update mysql2 então em rails digitei rails s, e funcionou


0

Resolvi o problema instalando o libmysqlclient-dev. sudo aptitude instale libmysqlclient-dev e depois execute o pacote.


-1

Eu instalei anteriormente o mysql2 0.4.5, mas isso estava me dando este erro, então instalei outra versão do mysql2 por:

gem install mysql2 - versão 0.3.20

Espero que isso resolva seu problema.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.