Gem :: LoadError untuk permata mysql2, tapi sudah ada di Gemfile

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

Kesalahan ini terjadi saat memuat file berikut:

active_record/base

Ini adalah kesalahan yang saya dapatkan saat menjalankan server rel.

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

Saya sudah selesai bundle install, dan mencoba memulai ulang server tetapi masih mendapatkan kesalahan.

Mysoulisinseoul
sumber
Apakah Anda menjalankan bundlesetelah menambahkan permata dan memulai ulang server?
Bachan Smruty
@BachanSmruty: Ya, saya telah melakukan itu.
Mysoulisinseoul
Apakah ini dalam penerapan? Sudahkah Anda menjalankanbundle install --deployment
j-dexx

Jawaban:

247

Jika Anda mengalami kesalahan ini saat meningkatkan ke rails 4.2.4 (juga dengan rails 4.1.5) coba gunakan versi mysql2 ini:

gem 'mysql2', '~> 0.3.18'

Rupanya mysql2 tidak masih kompatibel dengan versi rel yang lebih baru karena rails 4.2.4 cukup baru karena waktu saya menjawab pertanyaan ini 8 September 2015 jadi gunakan baris di atas di file Permata Anda dan jalankan:

bundle install 

Anda sebaiknya pergi

Hassan Azimi
sumber
2
di msyql2_adapter.rb, saya menemukan kode di bawah ini: gem 'mysql2', '~> 0.3.13' memerlukan 'mysql2' ini mungkin menjadi alasan mengapa default mysql2 versi 4.xx tidak berfungsi
Oscar Jiang
27

Ini berfungsi untuk saya ketika saya menentukan versi permata mysql2 sebelum yang terbaru (0.4.0). Untuk beberapa alasan ada masalah dengan Rails 4.2.4 dan permata 0.4.0 itu. Jadi, untuk memecahkan masalah, saya baru saja menentukan permata sebelumnya yang dirilis: 0,3.20 dan itu berfungsi dengan baik untuk saya!

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

Anda dapat memeriksa semua versi permata di sini: https://rubygems.org/gems/mysql2/versions

rom5jp
sumber
16

Mengubah

gem 'mysql2', '~> 0.3.18'

di Gemfile Anda.

Utas ini di mysql2 resmi Github mengatakan untuk melakukan ini. Anda perlu menyatakan nomor versi itu jika Anda menjalankan versi 4.xx

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

Lalu lari bundle update mysql2.

suga_shane
sumber
2
Terima kasih! Tepatnya, Anda tidak mau bundle updatekarena ini akan memperbarui semua permata Anda. Perintahnya adalah bundle update mysql2. Mungkin tampak jelas, tetapi itu adalah perintah yang salah dan dapat menimbulkan konsekuensi yang tidak diinginkan. (Untuk kembali dari bundle update, lari git checkout -- Gemfile.lock)
Nick
8

Saya mendapat kesalahan yang sama setelah meningkatkan ke Rails 4.1 dan saya berhasil mengatasinya dengan memperbarui mysql2. Jalankan ini di folder aplikasi rel Anda:

$ bundle update mysql2
valo
sumber
8

Masalah ini dapat terjadi jika Anda menggunakan versi rel> 4 yang lebih baru

Lakukan dua langkah sederhana ini, itu akan berhasil. Buka Gemfile Anda dan temukan baris di bawah ini

gem 'mysql2'

ganti baris itu dengan versi mysql tertentu seperti di bawah ini

gem 'mysql2', '~> 0.3.18'

Sekarang hentikan server dan jalankan bundel

bundle install

Sekarang restart server Anda. Ini harus berhasil.

rails s
Prabhakar Undurthi
sumber
7

Menjadi Pemula ruby ​​saya tidak bisa menemukan permata baris 'mysql2', '~> 0.3.18'

itu berarti pergi ke folder proyek rails Anda dan kemudian ada baris untuk mysql2 itu akan menjadi seperti 0,4 * sehingga Anda dapat mengubahnya menjadi permata 'mysql2', '~> 0.3.18'

dan karena kami memiliki definisi baru, kami harus membangun kembali ketergantungan tersebut sehingga untuk melakukan perintah sederhana itu seperti yang dijelaskan di bagian atas pemasangan bundel

Muaaz salagar
sumber
5

Itu tidak memuat permata mysql2 karena versi baru permata mysql2 (0.4.1) tidak dapat memuat permata mysql2_adaptor. Ini bekerja untuk saya.

gem 'mysql2', '~> 0.3.13'

dan lari

bundle install
sushilprj.dll
sumber
2

Saya mengalami kesalahan yang sama dan ini karena Rails 4.1 memerlukan versi minimum mysql2 0.3.13, dan kompatibel maksimum dengan Windows adalah versi 0.3.11.

Jadi saya mengedit file c:\RailsInstaller\Ruby1.9.3\lib\ruby\gems\1.9.1\gems\activerecord-4.1.1\lib\active_record\connection_adapters\mysql2_adapter.rbdan mengubah baris gem 'mysql2', '~> 0.3.13'menjadi gem 'mysql2', '~> 0.3.11', dan sejauh ini berhasil.

Lev Lukomsky
sumber
1

Itu tidak memuat permata mysql2 karena versi baru permata mysql2 (> = 0.4.0) tidak dapat memuat permata mysql2_adaptor. Bisakah kamu mencobanya?

gem 'mysql2', '~> 0.3.13'

Semoga berhasil.

Neeraj Kumar
sumber
0

Saya memecahkan masalah, menginstal permata mysql2 lokal (permata menginstal mysql2, menginstal bundel) dan menambahkan baris berikut ke Gemfile:

gem 'mysql2'

Mengatur adaptor mysql2 di database.yml

adapter: mysql2

juga penting!

atomiccoder
sumber
0

Saya benar-benar baru mengenal Ruby on Rails dan situs web tetapi mendengar apa yang berhasil untuk saya.

Saya harus mengubah gemfile saya, gem 'mysql2' menjadi gem 'mysql2', '~> 0.3.13' lalu di rails saya mengetik bundel install kemudian saya mencoba rails s dan mendapat error jadi saya mencoba bundle update mysql2 lalu di rails diketik rel s, dan itu berhasil

matt napper
sumber
0

Saya memecahkan masalah, menginstal libmysqlclient-dev. sudo aptitude install libmysqlclient-dev dan kemudian jalankan bundel.

Fábio Coelho
sumber
-1

Saya sebelumnya telah menginstal mysql2 0.4.5 tetapi itu memberi saya kesalahan ini jadi saya telah menginstal versi lain dari mysql2 oleh:

permata instal mysql2 --version 0.3.20

Semoga ini menyelesaikan masalah Anda.

Prashant Choudhary
sumber