13

私はそれが何百万回もあったことを知っていますが、すべてを試しましたが、まだこのエラーが発生しています:

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

Tasks: TOP => db:migrate
(See full trace by running task with --trace)

これは宝石のリストです(すべてではありません):

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
4

6 に答える 6

23

Sean と Mitch からの両方の回答が解決策に貢献しています。

  • mysql2 gem のバージョンは 0.3.11 以上である必要があります。
  • activerecord-mysql2-adapter は gemfile から削除する必要があります。

次のことを明確にしたかった:

  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'

Rails サーバーを再起動する必要がありました。そしてそれは問題を修正しました。

于 2012-12-09T13:15:23.823 に答える
2

理由はわかりませんが、gem "mysql2"、 "> = 0.3.11"を追加すると、機能します。gem "mysql2"、 '0.3.2'を試しましたが、機能しませんでした。ともあれ、ありがとう。

于 2012-10-04T15:57:41.933 に答える
0

変更することをお勧めしますlocalhost to 127.0.0.1。モデルを見せてください。おそらくいくつかのフィールドがmysqlのキーワードです

于 2012-10-04T17:05:14.090 に答える
0

port: 3306をdatabase.yml に追加してください。127.0.0.1代わりにlocalhost

于 2012-10-06T14:07:16.907 に答える