问题
I know that was a million times here but tried everything and I am still getting this error:
$ rake db:migrate
rake aborted!
undefined method `accept' for nil:NilClass
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
This is the gem list (not all):
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)
I have tried with all versions of mysql2 (from 0.2.7 to 0.3.2)
Edit (database file):
development:
adapter: mysql2
database: tripwall
username: root
password: pass
host: localhost
pool: 5
timeout: 5000
回答1:
Both answers from Sean and Mitch contribute to the solution:
- Version of mysql2 gem should be 0.3.11 and above, and
- activerecord-mysql2-adapter should be removed from gemfile.
Wanted to make it clear that:
- Your gemfile should contain the following line (remove activerecord-mysql2-adapter alone):
gem 'mysql2'
gem list
should output the following line:activerecord-mysql2-adapter (0.0.3)
mysql2 (0.3.11)
Edit:
I also got the below error when I tried to open the index of a scaffold-generated model:
NoMethodError (undefined method `accept' for nil:NilClass):
app/controllers/posts_controller.rb:5:in `index'
I had to restart the rails server; and that fixed the problem.
回答2:
I just remembered what I did to fix the error when I had it.
Just remove
activerecord-mysql2-adapter (0.0.3)
from your gemfile!
Hopefully that fixes it!
Cheers, Sean
回答3:
I don't know why but when I add gem "mysql2", ">= 0.3.11" and it works. I have tried gem "mysql2", '0.3.2' and that was not working. Thank you anyway.
回答4:
I suggest to change localhost to 127.0.0.1
. Please show your model, maybe some fields is the keyword of mysql
回答5:
please add the port: 3306
to your database.yml, and 127.0.0.1
instead localhost
回答6:
In addition to the earlier solutions mentioned:
- Get rid of the gem activerecord-mysql2-adapter
- Use gem mysql2 version 0.3.11 and above
It turned out there was simultaneously an older mysql2 gem installed, subtly throwing off my Rails app:
gem list
mysql2 (0.2.2, 0.3.17)
gem uninstall mysql --version=0.2.2
Finally after that uninstall, my app launched free of this error:
/home/master/.rbenv/versions/2.5.6/lib/ruby/gems/2.5.0/gems/bundler-1.17.3/lib/bundler/rubygems_integration.rb:408:in
block (2 levels) in replace_gem': Please install the mysql2 adapter:
gem install activerecord-mysql2-adapter` (can't activate mysql2 (~> 0.3.10), already activated mysql2-0.2.2. Make sure all dependencies are added to Gemfile.) (LoadError)
来源:https://stackoverflow.com/questions/12730190/rails-mysql2-undefined-method-accept-for-nilnilclass