【问题标题】:Active Record query errorActive Record 查询错误
【发布时间】:2013-01-28 09:30:52
【问题描述】:

此查询引发错误:

EncodingPreset.where('default = ?', false)

ActiveRecord::StatementInvalid: PG::Error: ERROR:  syntax error at or near "default"
LINE 1: ...coding_presets".* FROM "encoding_presets"  WHERE (default = ...
                                                             ^
: SELECT "encoding_presets".* FROM "encoding_presets"  WHERE (default = 'f')

但这有效:

EncodingPreset.where(:default => false)

为什么第一个查询不起作用?

版本:

ruby-1.9.3-p194
activerecord-3.2.11

【问题讨论】:

    标签: ruby-on-rails postgresql gem rails-activerecord


    【解决方案1】:

    这是因为 default 是一个关键字,并且必须放在引号中才能在查询中使用。 这应该有效:

    EncodingPreset.where('"default" = ?', false)
    

    【讨论】:

      【解决方案2】:

      default 是 postgreSQL 中的保留关键字,这就是它抛出错误的原因。 用其他名称更改列名称,然后它可以工作

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-17
        • 2013-02-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多