Mysql2::错误: '6' 中的未知列 'where clause':SELECT

标签 mysql ruby-on-rails ruby ruby-on-rails-3.2 rails-3-upgrade

我正在将我的 Rails 应用程序从 Rails 2.3 升级到 3.2。 我收到了这个奇怪的错误

Mysql2::错误:“where 子句”中的未知列“6”:

以上错误是由于 `(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

有人知道这里发生了什么吗?是因为 gem 不兼容吗? 如果您需要更多详细信息,请告诉我。

最佳答案

此问题是由于 gem 不兼容造成的。我使用“slim_scrooge”gem 来优化 Rails 2.X 中的查询,但在 Rails 3 或更高版本中效果不佳。

关于Mysql2::错误: '6' 中的未知列 'where clause':SELECT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23091680/

相关文章:

MySQL - 从 View 中选择或直接选择

mysql 计数分组

php - 加在一起 ​​MySQL values 论坛专栏

ruby-on-rails - 助手中的 ActiveRecord

ruby-on-rails - rails : Active Admin Association Image column

ruby-on-rails - 如何将 ActiveRecord::QueryMethods::WhereChain 转换为 ActiveRecord_Relation

mysql - 如何在 Ruby on Rails 4 中创建比其父级具有更多属性的继承模型?

ruby - Redis:如何在 ruby​​ 客户端中以编程方式加载 dump.rdb

mysql - MySQL Merging Queries的JOIN问题--Overwrite or Merge two rows from the same table

ruby - 确定 rufus-tokyo 查询将返回的记录数的最佳方法是什么?