Rails:MySQL2在命中模型查找器时出错
我用Rails实现了以下目标: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
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有什么问题
请帮忙
你的
JoernActiveRecord 如果使用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并保存了文件