带有mysql2和rails3(bundler)的RuntimeError

Swi*_*tak 76 mysql ruby-on-rails bundler

我收到这个错误

`establish_connection': Please install the mysql2 adapter: `gem install activerecord-mysql2-adapter` (no such file to load -- active_record/connection_adapters/mysql2_adapter) (RuntimeError)
  from /opt/ruby-enterprise-1.8.7-2010.02/lib/ruby/gems/1.8/gems/activerecord-
Run Code Online (Sandbox Code Playgroud)

是整个错误和我的配置和gemfile的转储.

str*_*am7 101

我在使用rails 3.0.7和mysql2 0.3.2时遇到了同样的错误.我在这里找到的解决方案是使用旧版本的mysql2.因此编辑你的gemfile

gem 'mysql2', '< 0.3'
Run Code Online (Sandbox Code Playgroud)

并运行

bundle install 
Run Code Online (Sandbox Code Playgroud)

  • 对我不起作用(我正在使用Rails 3.2.3). (4认同)
  • 有关更多启示,请参阅github上的以下mysql2问题,其中说mysql 0.3.x仅适用于rails 3.1及以后版本:https://github.com/brianmario/mysql2/issues/155 (3认同)
  • 除了那些版本的mysql2在大型网站中有阻塞问题 (2认同)

小智 36

还需要从改变适配器mysqlmysql2这里说在database.yml中 安装雪豹mysql2宝石与RVM的Rails 3

从:

development: adapter: mysql

至:

development: adapter: mysql2


ama*_*euk 14

您是否在gemfile中包含mysql2 gem而不是旧的mysql gem,然后运行bundle install?


mme*_*ell 6

如果您正在使用rvm,并且可能在rvm之外添加了mysql2,请尝试以下步骤:确认您的Gemfile说:

gem 'mysql2'
Run Code Online (Sandbox Code Playgroud)

或者对于Rails2.x:

gem 'mysql2', '~> 0.2.11'
Run Code Online (Sandbox Code Playgroud)

然后:

$ cd RAILS_ROOT
$ gem uninstall mysql2

Select gem to uninstall:
 1. mysql2-0.2.11
 2. mysql2-0.3.6
 3. All versions
> 3 # select "All versions"
$ rvm gemset install mysql2
$ bundle install
Run Code Online (Sandbox Code Playgroud)

现在rails应该正常启动.


Jos*_*wis 0

从 Ubuntu 11.10 升级到 12.04 后,我遇到了同样的错误。这就是我解决问题的方法:

gem uninstall mysql2
bundle
Run Code Online (Sandbox Code Playgroud)

我认为这里的关键是“本机扩展”——我想当我上次安装时,我使用的是不同版本的 mysql。

Installing mysql2 (0.3.11) with native extensions
Run Code Online (Sandbox Code Playgroud)