RVM および MySQL の Ruby 1.9.2 ではすでに初期化されているという定数の警告が表示される

StackOverflow https://stackoverflow.com/questions/3426359

質問

RVM で Ruby 1.9.2.rc2 を使用して Rails 3 RC を実行すると、MySQL ドライバー バンドルから次のような非常に多数のエラーが発生し続けます。

/opt/local/rvm/gems/ruby-1.9.2-rc2/gems/mysql-2.8.1/lib/mysql_api.bundle: warning: already initialized constant MysqlRes
/opt/local/rvm/gems/ruby-1.9.2-rc2/gems/mysql-2.8.1/lib/mysql_api.bundle: warning: already initialized constant MysqlField
/opt/local/rvm/gems/ruby-1.9.2-rc2/gems/mysql-2.8.1/lib/mysql_api.bundle: warning: already initialized constant MysqlError
/opt/local/rvm/gems/ruby-1.9.2-rc2/gems/mysql-2.8.1/lib/mysql_api.bundle: warning: already initialized constant VERSION
/opt/local/rvm/gems/ruby-1.9.2-rc2/gems/mysql-2.8.1/lib/mysql_api.bundle: warning: already initialized constant OPT_CONNECT_TIMEOUT
/opt/local/rvm/gems/ruby-1.9.2-rc2/gems/mysql-2.8.1/lib/mysql_api.bundle: warning: already initialized constant OPT_COMPRESS
/opt/local/rvm/gems/ruby-1.9.2-rc2/gems/mysql-2.8.1/lib/mysql_api.bundle: warning: already initialized constant OPT_NAMED_PIPE
/opt/local/rvm/gems/ruby-1.9.2-rc2/gems/mysql-2.8.1/lib/mysql_api.bundle: warning: already initialized constant INIT_COMMAND

これは次のように表示されます rails console 単体テスト、完全な Rails スタックを必要とするものはすべて、同じ環境で Sequel を直接使用するスクリプトは必要ありません。

バンドル自体はロードされ、MySQL ドライバーは機能しますが、この膨大な警告の山は、Rails を介して実行されるものに先立って表示されます。通常、これは、 mysql gem は Rails 環境内のどこかにあります。gem は Gemfile で宣言されます。

gem 'rails', '3.0.0.rc'

gem 'haml'
gem 'sequel'

gem 'mysqlplus'
gem 'mysql'

これは、Rails オートローダーが Mysql ライブラリがすでにロードされていることを認識できず、再度ロードしているためだと思います。これを修正する簡単な方法はありますか?

アップデート:

負荷 mysql または mysqlplus ただし、両方を同時に実行しないと、次のような警告が表示されます。 mysqlplus のすべての機能が含まれています mysql これは Sequel の依存関係です。

役に立ちましたか?

解決

mysqlplus gem が必要ですか?私は mysql 2.8.1 のみを備えた Rails 3 を使用しています。

gem 'mysql', '2.8.1'

私は mysqlplus を使用したことがありませんが、警告に表示されている定数を設定し、mysql gem がロードされるときにこれらの定数を再度設定すると推測しています。

アップデート:代わりに mysql2 を使用してください

#gem 'mysql', '2.8.1'
gem 'mysql2'

また、database.yml 内のデータベース アダプターを更新する必要があります。

development:
  #adapter: mysql
  adapter: mysql2
  database: somedatabase_development
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top