我正在将我的 Rails 应用程序从 Rails 2.3 升级到 3.2。我收到了这个奇怪的错误
Mysql2::Error: Unknown column '6' in 'where clause':
上述错误是由于 `(backtick) 应用于 where 子句中的数据以及列名,请参阅以下查询。
Mysql2::Error: Unknown column '6' in 'where clause': SELECT `users`.`username`,`users`.`password` FROM `users` WHERE `id` IN (`6`)
看到 6,即使它是数据 activerecord 正在应用反引号。因为 mysql 正在引发异常。
注意:这通常在调用相关对象时看到(一对一,多对多)
例如:
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.
}
这在整个应用程序和其他模型中都发生了,上面的代码片段只是一个例子。
环境细节:
操作系统:Ubuntu 13.10,Ruby 1.9.3-p545,Rails 3.2.17 mysql 5.5
有谁知道这里发生了什么?是因为宝石不兼容吗?如果您需要更多详细信息,请告诉我。