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

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

$ rake db:migrate rake aborted! undefined method `accept' for nil:NilClass Tasks: TOP => db:migrate (See full trace by running task with --trace) 

这是gem列表(不是全部):

 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) 

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

编辑(数据库文件):

 development: adapter: mysql2 database: tripwall username: root password: pass host: localhost pool: 5 timeout: 5000 

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

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

想要说清楚:

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

    gem’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' 

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

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

只需删除

activerecord-mysql2-adapter(0.0.3)

来自你的gemfile!

希望能解决它!

干杯,肖恩

我不知道为什么,但当我添加gem“mysql2”,“> = 0.3.11”,它的工作原理。 我已经尝试过gem“mysql2”,“0.3.2”,但这不起作用。 还是非常感谢。

我建议将localhost to 127.0.0.1更改localhost to 127.0.0.1 。 请显示您的模型,也许某些字段是mysql的关键字

请将port: 3306添加到database.yml,将127.0.0.1添加到localhost