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.

Mysoulisinseoul
fonte
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

Hassan Azimi
fonte
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

rom5jp
fonte
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.

suga_shane
fonte
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
valo
fonte
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
Prabhakar Undurthi
fonte
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

Muaaz Salagar
fonte
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
Sushilprj
fonte
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.

Lev Lukomsky
fonte
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.

Neeraj Kumar
fonte
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!

codificador atômico
fonte
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

mate napper
fonte
0

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

Fábio Coelho
fonte
-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.

Prashant Choudhary
fonte