Rails 4 - Gem :: LoadError: Veritabanı bağdaştırıcısı için 'mysql2' belirtildi, ancak taş yüklenmedi


150

Benim gemfile var:

gem 'mysql2'

Benim database.yml aşağıdaki gibidir:

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

İkisini de çalıştırdım bundle updateve bundle installGemfile.lock'um mysql2'yi gösteriyor.

Ancak çalıştırdığımda rake db:migratebunu hem bilgisayarımda hem de hazırlama sunucusunda alıyorum:

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).
.....

Sadece mysql2 ya da başka bir şey kötü bir sürümü olmadığından emin olmak için, yaptım bundle clean --forceve koştu bundle installve bundle updatetekrar çalıştırdığımda gem listgörüyorum mysql2 (0.4.0)ve başka sürümleri yok.

Herhangi bir fikir en çok takdir edilecektir.


ÇÖZÜM

Şu anda Rails 4.1.x ve 4.2.x ile ilgili bir sorun, bu hata raporu başına , 4.2.x raylarının bir sonraki sürümünde düzeltilecektir (bağlantı için yorumlarda dcorr'a kredi).

Bu arada gemfile'ınıza bu satırı ekleyerek mysql2'nin 0.3.18 sürümüne geçerek düzeltebilirsiniz:

gem 'mysql2', '~> 0.3.18'

1
Deneyinbundle update mysql2
Pavan

Ben de denedim. İşe yaramadı. Gördüğüm kadarıyla mysql2 (0.4.0)yakut taşların alacağı en yeni sürüm ve zaten yüklü.
newUserNameHere

12
Çözüm gem 'mysql2', '~> 0.3.18'şuydu : Gemfile'da.
newUserNameHere

6
Bu mysql2 ile ilgili bir hata değil, ActiveRecord adaptöründeki gereksinimle ilgili bir sorun: github.com/rails/rails/issues/21544 . Bu raylar yöneticisinde düzeltildi: github.com/rails/rails/commit/…
dcorr

@Pavan Awsome maahn !! _ / _
Varun

Yanıtlar:


50

Sadece başka bir güncelleme - sorudaki çözüm doğrudur.

4. yorum şunları dikkate almaya değer:

Bu mysql2 ile ilgili bir hata değil, ActiveRecord adaptöründeki gereksinimle ilgili bir sorun: http://github.com/rails/rails/issues/21544 . Bu raylar yöneticisinde düzeltildi: https://github.com/rails/rails/commit/5da5e3772c32593ecf2f27b8865e81dcbe3af692

Ben kravat başardı Rails 4.2.4için 4-2-stableşube ve en son ile çalışan olsun mysql2:

resim açıklamasını buraya girin

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'

Eğer hız bir öncelik ise, '4.2.4' raylarını '4-2-kararlı' dallara sabitlemek yerine mysql2'yi '0.3.20' ye düşürmek biraz daha hızlıydı.
seanriordan08

mysql gem çok cimri buggy sorunları postgreSQL T__T karşılaştırır inanmak zor
newBike

Windows ortamı - Imagemagick vb. İle aynı. Dış bağımlılıkları kullanmanız gerekiyor ve Windows onlar için merkezi bir repo olmadığı için zorlaşıyor
Richard Peck

Rails 5 ne olacak?
Richard Peck

@RichardPeck Rails 5.0.3
garci560

67

Sadece yap:

gem 'mysql2', '~> 0.3.18' bu taş ile çalışır rails version 4.x.x

eğer yüklerse gem 'mysql2', '~> 0.4.0'gem yükleme hatası üretir ve uyumluluk sorunlarına neden olur


Temiz, basit ve özlü. Teşekkürler!
Am33d

Worked for me @kaleem
khalidh

9

Bu sorun burada giderildi: https://github.com/brianmario/mysql2/issues/950

Rails 4.x için lütfen 0.5.x yükseltmesini önlemek için gem'i mysql2 '~> 0.4.0' 'ya sabitleyin.

Gemfile:

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

O zaman koş bundle update rails mysql2

Şu anda mysql v 8.0.11 kullanıyorum


8

Ne zaman yayınlandığına ve kullanılmakta olan Rails sürümüne göre bu özel sorunun cevabı, sorunun neden olması bundle updateve mysql2 sürümünüzün en son Rails ActiveRecord ile uyumsuzluk sorunu olan 0.4.x sürümüne güncellenmesidir.

Yine, bunun Rails / ActiveRecord'un eski sürümlerini kullanan insanlar için çözüm olmadığını unutmayın.

Hızlı çözüm mysql2gemfile'ınızdaki sürümü aşağıdaki gibi belirtmektir :

gem 'mysql2', '0.3.20'

Uzun çözüm, ActiveRecord için bir güncelleştirme veya mysql2'deki bir şeyin değişmesini beklemek olacaktır.


7

Ray sürümünüzü yükseltebiliyorsanız, Gemfile'ınızı buna değiştirin ve mysql2 gem sürümünü düşürmeden sorunu çözecektir:

gem 'rails', '4.2.6'

5

Tam bir acemi olarak ben sadece bir deneme kontrolü yaptım ve nihayet sunucumu çalıştıran bu nasıl yapılacağı konusunda şaşkın var, işte nasıl çalıştığını var.

dizin ( "çalışma") çalışma dosyasına almak ve oradan taş dosyası ( "Gemfile") düzenlemek için MySQL 2 yüklü gitmek vardır oluşturduğunuz uygulamanın dosya ( "sample_app") içine almak mücevher 'mysql2' için mücevher 'mysql2', '~> 0.3.18'

şimdi cmd'ye dönün ve "bundle install" komutunu çalıştırın.

bu nedenle dizini düzenlemek için dizinde yukarıdaki dosyaları dikkate alarak dosya olmalıdır. "C \ iş \ sample_app \ Gemfile"

Umarım biraz yardımcı oldum.


4

Bu genellikle makinenizde bazı mysql paketleri eksik olduğunda olur. Herhangi bir hata alıyor gem install mysql2musunuz? Hangi işletim sistemi üzerinde çalışıyorsunuz?

Debian veya ubuntu üzerinde deneyin sudo apt-get install libmysqlclient-dev.

Ayrıca mücevher groupGemfile bir deyim içine yerleştirilmediğinden emin olun .


Yardım için +1. Ancak zaten libmysqlclient-dev var ve mücevher bir grup deyimi içinde değil. Garip olan şey, diğer projelerimde iyi çalışıyor, sadece bu değil. Ayrıca bu işletim sistemimin yeni bir yüklemesi değil, bir süredir çevremdeki hiçbir şeyi değiştirmedim. Aynı şey, aynı sorunları da gördüğüm evreleme sunucusu için de geçerlidir.
newUserNameHere

1

Aynı sorunu vardı ama source 'https://rubygems.org'gem dosyasının üstüne ekleme sorunu çözüldü.

Adımlar:

source 'https://rubygems.org'gem dosyanıza ekleyin . Yorum yapın mysql2 gemve gem 'mysql2', '~> 0.3.18' Çalıştır'ı ekleyinbundle install


0

bunu dene:

bundle update mysql2

bu komut 'mysql2' taşınızı en son sürüme güncelleyecektir (0.3.17 veya üstü olmalıdır) ve raylar sunucunuzu başlatın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.