sql >> データベース >  >> RDS >> PostgreSQL

Heroku-ActiveRecord ::StatementInvalid(PG ::Error:ERROR:要求された列が存在しません

    標準のSQL文字列は一重引用符を使用し、二重引用符は識別子(テーブル名や列名など)用です。 PostgreSQLはここでの標準に従い、MySQLとSQLiteはそれほど厳密ではなく、他のデータベースはさまざまな量の厳密さで他のことを行います。いずれの場合も、SQL文字列リテラルの一重引用符はどこでも同じように機能するはずです。

    SQL文字列に二重引用符を使用しています:

    @holidays = Holiday.find(:all, :conditions => 'state = "requested"')
    #------------------------------------------------------^---------^
    

    一重引用符で囲む必要があります:

    @holidays = Holiday.find(:all, :conditions => %q{state = 'requested'})
    

    またはそれを最新化して、ActiveRecordに見積もりを処理させます:

    @holidays = Holiday.where(:state => 'requested')
    

    おそらくこれも引用を修正する必要があります:

    @holidays = Holiday.find(:all, :conditions => ["approver_id = #{current_user.id}", "state = requested"])
    

    繰り返しますが、それを最新化するのが最も簡単な方法です:

    @holidays = Holiday.where(:approver_id => current_user.id, :state => 'requested')
    

    あなたはSQLiteで開発しているが、PostgreSQLで展開していると思います。これは悪い考えです。常に同じスタックで開発およびデプロイしてください。




    1. SQL Server Express、Web、またはWorkgroupエディションでSSISパッケージを実行できますか?

    2. pythonmysqlフェッチクエリ

    3. Oracleで文字列を分割する方法

    4. C#からSQL Serverを呼び出すときに、いつ再試行するか失敗するかを知っていますか?