Rails アプリを Rails 2.3 から 3.2 にアップグレードしています。そして、私はこの奇妙なエラーが発生しています
Mysql2::Error: Unknown column '6' in 'where clause':
上記のエラーは、列名とともに where 句のデータに適用される `(バックティック) によるものです。次のクエリを参照してください。
Mysql2::Error: Unknown column '6' in 'where clause': SELECT `users`.`username`,`users`.`password` FROM `users` WHERE `id` IN (`6`)
データアクティブレコードであっても6を参照してください。これは、mysqlが例外を発生させているためです。
注:これは通常、関連オブジェクト (1 対 1、多対多) の呼び出し中に見られます。
例えば:
u = User.where(:active =>true).each{|u|
//some code
u.user_role #error will raise in this line
}
オブジェクトを再起動すると、正常に動作します。
u = User.where(:active =>true).each{|u|
//some code
u.user_role #error will raise in this line
u1 = User.find(u.id)
u1.user_role #works fine.
}
これはアプリケーション全体で発生しており、他のモデルでも発生しています。上記のコード スニペットは 1 つのインスタンスにすぎません。
環境の詳細:
OS: Ubuntu 13.10、Ruby 1.9.3-p545、Rails 3.2.17 mysql 5.5
ここで何が起こっているか知っている人はいますか?宝石の非互換性のためですか?詳細が必要な場合はお知らせください。