私の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
を実行すると、コンピューターとステージングサーバーの両方で次のようになります。
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のクレジット)。
それまでの間、gemfileに次の行を追加して、mysql2のバージョン0.3.18にダウングレードすることで修正できます。
gem 'mysql2', '~> 0.3.18'
さらに更新してください - 問題の解決策は正しいです。
4番目のコメントは、注意する価値があります。
これはmysql2のバグではありません、それはActiveRecordアダプタの要件の問題です: http://github.com/Rails/rails/issues/21544 。これはRailsマスターで修正されました: https://github.com/Rails/rails/commit/5da5e3772c32593ecf2f27b8865e81dcbe3af692
Rails 4.2.4
を4-2-stable
ブランチに結び付け、最新のmysql2
と連携させることができました。
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'
ただしてください
この宝石がgem 'mysql2', '~> 0.3.18'
で動作するRails version 4.x.x
gem 'mysql2', '~> 0.4.0'
をインストールするとgem load errorが発生し、互換性の問題が発生します
それが投稿された時と使用されているRailsのバージョンに関連したこの特定の質問に対する答えは、問題がbundle update
を行うこととmysql2バージョンが最新のRails ActiveRecordとの非互換性の問題を持つ0.4.xへの更新から生じることです。
繰り返しますが、これは古いバージョンのRails/ActiveRecordを使用している人々のための解決策ではないことに注意してください。
簡単な解決策は、以下のようにgemfileで単にmysql2
バージョンを指定することです。
gem 'mysql2', '0.3.20'
長い解決策は、ActiveRecordの更新またはmysql2の何かが変更されるのを待つことです。
Railsのバージョンをアップグレードできる場合は、Gemfileをこれに変更すると、mysql2 gemのバージョンをダウングレードせずに問題が解決します。
gem 'Rails', '4.2.6'
この問題はこちらで解決されました。 https://github.com/brianmario/mysql2/issues/95
Rails 4.xの場合、0.5.xへのアップグレードを避けるためにgemをmysql2 '〜> 0.4.0'に固定してください。
Gemfile:
gem 'Rails', '4.2.8'
gem 'mysql2', '~> 0.4.0'
それからbundle update Rails mysql2
を実行してください。
私は現在mysql v 8.0.11を使用しています。
完全な初心者として私はこれを行う方法について混乱してしまったので、私はただ試しチェックをして、そしてついに私のサーバーを動かしました。
作業ディレクトリのファイル( "work")に入り、そこからmysql 2がインストールされている作成したアプリのファイル( "sample_app")に入ります。gemファイル( "Gemfile")に行きますeditgem 'mysql2'からgem 'mysql2'、 '〜> 0.3.18'
cmdに戻って "bundle install"コマンドを実行してください。
そのため、上記のファイルを括弧で囲んで編集するディレクトリを指定してください。 "c\work\sample_app\Gemfile"
私が助けになったことを願っています。
あなたのマシンにいくつかのmysqlパッケージが足りないとき、これは通常起こります。 gem install mysql2
からエラーが発生しましたか?どのOSを使っていますか?
Debianやubuntuの場合はSudo apt-get install libmysqlclient-dev
を試してください。
また、gemがGemfileのgroup
ステートメントの内側に配置されていないことも確認してください。
同じ問題がありましたが、gemファイルの先頭にsource 'https://rubygems.org'
を追加して問題を解決しました。
ステップ:
gemファイルにsource 'https://rubygems.org'
を追加してください。 mysql2 gem
をコメントアウトしてgem 'mysql2', '~> 0.3.18'
を追加するbundle install
を実行
これを試して:
bundle update mysql2
このコマンドはあなたの 'mysql2' gemを最新バージョン(0.3.17以上であるべきです)に更新してRailsサーバーを起動します。