No meu gemfile eu tenho:
gem 'mysql2'
Meu database.yml é o seguinte:
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
Já corri tanto bundle update
e bundle install
e meus shows Gemfile.lock mysql2.
No entanto, quando executo rake db:migrate
, obtenho isso no meu computador e no servidor de teste:
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).
.....
Apenas para ter certeza de que não havia uma versão ruim do mysql2 ou algo assim, bundle clean --force
executei bundle install
e executei várias bundle update
vezes e quando executo gem list
, vejo mysql2 (0.4.0)
outras versões.
Qualquer idéia seria muito apreciada.
SOLUÇÃO
Atualmente, é um problema com o Rails 4.1.xe 4.2.x, de acordo com este relatório de bug , será corrigido na próxima versão do rails 4.2.x (crédito para dcorr nos comentários do link).
Enquanto isso, você pode corrigir fazendo o downgrade para a versão 0.3.18 do mysql2 adicionando esta linha ao seu gemfile:
gem 'mysql2', '~> 0.3.18'
fonte
bundle update mysql2
mysql2 (0.4.0)
é a versão mais recente que o ruby gems terá e já está instalado.gem 'mysql2', '~> 0.3.18'
no Gemfile.Respostas:
Apenas mais uma atualização - a solução na pergunta está correta.
Vale ressaltar o quarto comentário:
Consegui amarrar
Rails 4.2.4
ao4-2-stable
ramo e fazê-lo funcionar com as últimasmysql2
:fonte
Apenas faça:
gem 'mysql2', '~> 0.3.18'
esta jóia trabalha comrails version 4.x.x
se instalar
gem 'mysql2', '~> 0.4.0'
, gera erro de carregamento de gema e causa problemas de compatibilidadefonte
Esse problema foi solucionado aqui: https://github.com/brianmario/mysql2/issues/950
Gemfile:
Então corra
bundle update rails mysql2
Atualmente, estou usando o mysql v 8.0.11
fonte
A resposta para essa pergunta específica em relação a quando ela foi publicada e a versão do Rails sendo usada é que o problema é causado pela execução de um
bundle update
ae sua versão do mysql2 é atualizada para 0.4.x, que tem um problema de incompatibilidade com o Rails ActiveRecord mais recente.Novamente, observe que essa NÃO é a solução para pessoas que usam versões mais antigas do Rails / ActiveRecord.
A solução rápida é simplesmente especificar a
mysql2
versão no seu gemfile da seguinte maneira:gem 'mysql2', '0.3.20'
A solução longa seria esperar por uma atualização no ActiveRecord ou algo no mysql2 mudar.
fonte
Se você puder atualizar sua versão do rails, altere seu Gemfile para isso e ele resolverá o problema sem fazer o downgrade da versão do mysql2 gem:
fonte
Como um iniciante completo, fiquei confuso sobre como fazer isso, então fiz uma verificação de teste e finalmente consegui meu servidor funcionando. Aqui está como eu o fiz funcionar.
entre no arquivo do diretório de trabalho ("trabalho") e, a partir daí, entre no arquivo do aplicativo que você criou ("sample_app") que possui o mysql 2 instalado, vá para o arquivo gem ("Gemfile") edite a gem 'mysql2' para gem 'mysql2', '~> 0.3.18'
Agora volte ao cmd e execute o comando "bundle install".
portanto, o diretório para editar o arquivo levando em consideração os arquivos acima entre parênteses. "c \ work \ sample_app \ Gemfile"
Espero ter ajudado.
fonte
Isso geralmente acontece quando você está perdendo alguns pacotes mysql em sua máquina. Você recebe algum erro
gem install mysql2
? Em que sistema operacional você está trabalhando?Se no debian ou no ubuntu tente
sudo apt-get install libmysqlclient-dev
.Verifique também se a gema não está dentro de uma
group
declaração no seu Gemfile.fonte
Tinha o mesmo problema, mas adicionando
source 'https://rubygems.org'
ao topo do arquivo gem problema resolvido.Passos:
adicione
source 'https://rubygems.org'
ao seu arquivo gem. Comentemysql2 gem
e adicionegem 'mysql2', '~> 0.3.18'
Executarbundle install
fonte
tente isto:
este comando atualizará sua gema 'mysql2' para a versão mais recente (deve ser 0.3.17 ou superior) e iniciará o servidor rails.
fonte