ใน gemfile ของฉันฉันมี:
gem 'mysql2'
database.yml ของฉันเป็นดังนี้:
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
ฉันเรียกใช้ทั้งสองbundle update
และbundle install
Gemfile.lock ของฉันแสดง mysql2
อย่างไรก็ตามเมื่อฉันเรียกใช้rake db:migrate
ฉันได้รับสิ่งนี้ทั้งบนคอมพิวเตอร์ของฉันและบนเซิร์ฟเวอร์ staging:
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).
.....
เพียงเพื่อให้แน่ใจว่าไม่มีรุ่นที่ไม่ดีของ mysql2 หรือบางสิ่งบางอย่างฉันทำbundle clean --force
และวิ่งbundle install
และbundle update
อีกครั้งและเมื่อฉันเรียกใช้gem list
ฉันเห็นmysql2 (0.4.0)
และไม่มีรุ่นอื่น
ความคิดใด ๆ ที่จะได้รับการชื่นชมมากที่สุด
สารละลาย
ปัจจุบันมีปัญหาเกี่ยวกับ Rails 4.1.x และ 4.2.x ตามรายงานข้อผิดพลาดนี้มันจะได้รับการแก้ไขในรุ่นถัดไปของ Rails 4.2.x (เครดิตถึง dcorr ในความคิดเห็นสำหรับลิงก์)
ในเวลาเฉลี่ยคุณสามารถแก้ไขได้โดยทำการลดระดับเป็นรุ่น 0.3.18 ของ mysql2 โดยเพิ่มบรรทัดนี้ใน gemfile ของคุณ:
gem 'mysql2', '~> 0.3.18'
mysql2 (0.4.0)
คือพลอยทับทิมรุ่นใหม่ล่าสุดจะติดตั้งแล้ว
gem 'mysql2', '~> 0.3.18'
ใน Gemfile
bundle update mysql2