PostgreSQL
 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rails, PostgreSQL и History Triggers

  2. как да изберете само уникални стойности от свързани таблици

  3. Размито търсене на ActiveRecord

  4. Postgres sql синтактична грешка при вмъкване на заявка от phpPgAdmin

  5. LISTEN/NOTIFY pgconnection прекъсва java?