Rails mysql2 undefined方法`accept'代表nil:NilClass

mit*_*tch 12 ruby mysql rake migrate ruby-on-rails-3

我知道这是一百万次,但尝试了一切,我仍然得到这个错误:

$ rake db:migrate
rake aborted!
undefined method `accept' for nil:NilClass

Tasks: TOP => db:migrate
(See full trace by running task with --trace)
Run Code Online (Sandbox Code Playgroud)

这是宝石列表(不是全部):

activemodel (3.2.8)
activerecord (3.2.8)
activerecord-mysql2-adapter (0.0.3)
builder (3.1.3, 3.0.3)
bundler (1.2.1)
mysql2 (0.3.2)

rails (3.2.8)
rails_apps_composer (2.2.10)
railties (3.2.8)
rake (0.9.2.2)
rdoc (3.12)
sqlite3 (1.3.6)
therubyracer (0.10.2)
thor (0.16.0)
tilt (1.3.3)
treetop (1.4.10)
twitter-bootstrap-rails (2.1.3)
tzinfo (0.3.33)
uglifier (1.3.0)
Run Code Online (Sandbox Code Playgroud)

我尝试过所有版本的mysql2(从0.2.7到0.3.2)

编辑(数据库文件):

development:
  adapter: mysql2
  database: tripwall
  username: root
  password: pass
  host: localhost
  pool: 5
  timeout: 5000
Run Code Online (Sandbox Code Playgroud)

Sub*_*han 22

Sean和Mitch的答案都有助于解决方案:

  • mysql2 gem的版本应为0.3.11及以上版本
  • 应该从gemfile中删除activerecord-mysql2-adapter.

想要说清楚:

  1. 您的gemfile应包含以下行(仅删除activerecord-mysql2-adapter):

    宝石'mysql2'

  2. gem list 应该输出以下行:

    activerecord-mysql2-adapter(0.0.3)

    mysql2(0.3.11)

编辑:

当我尝试打开脚手架生成的模型的索引时,我也遇到了以下错误:

NoMethodError (undefined method `accept' for nil:NilClass):
app/controllers/posts_controller.rb:5:in `index'
Run Code Online (Sandbox Code Playgroud)

我不得不重启rails服务器; 并解决了这个问题.


Sea*_*ean 13

我记得当我拥有它时我做了什么来修复错误.

只需删除

activerecord-mysql2-adapter(0.0.3)

来自你的gemfile!

希望能解决它!

干杯,肖恩