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。
想要说清楚:
- 您的gemfile应包含以下行(仅删除activerecord-mysql2-adapter):
gem’mysql2′
-
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