Rails:MySQL2在命中模型查找器时出错

Rails:MySQL2在命中模型查找器时出错,mysql,ruby-on-rails,Mysql,Ruby On Rails,我用Rails实现了以下目标: User.find(:all, :conditions => ["character = ?", character]) character是一个Fixnum,从sql的翻译方式可以看出。需要一个Fixnum 然后我得到这个错误: Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server versio

我用Rails实现了以下目标:

User.find(:all, :conditions => ["character = ?", character])
character
是一个Fixnum,从sql的翻译方式可以看出。需要一个Fixnum

然后我得到这个错误:

Mysql2::Error: You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use near '= 5)'
at line 1: SELECT `users`.* FROM `users` WHERE (character = 5)
我有点困惑,绝对不明白这行sql有什么问题

请帮忙

你的


Joern

ActiveRecord

如果使用Rails 4,您应该使用它来查找多个记录:

User.where character: character
如果要加载特定记录,可以这样使用:

User.find_by character: character
--

具体的

我认为您的错误更多的是ActiveRecord问题,而不是Fixnum问题-您使用该数据查找记录的事实与此无关


我可能错了,但我认为底线是您使用了您定义的ActiveRecord方法

问题在于
字符
在mysql中是一个关键字。如果你用反勾来逃避它,它应该会起作用

User.find(:all, :conditions => ["`character` = ?", character])
当你做一个rails的时候

User.where(:character => character)
正如Rich Peck所建议的那样,rails会自动转义所有字段的名称以防止出现此问题:您可以在日志中看到它这样做


编辑:从长远来看,您可能会发现更改列名称的麻烦更少。

我已经尝试检查>和<使用字符-1和+1-所有都没有帮助,同样的错误,我已经将编码显式设置为UTF8并保存了文件