sql >> Databasteknik >  >> RDS >> PostgreSQL

Heroku - ActiveRecord::StatementInvalid (PG::Error:ERROR:kolumn begärd finns inte

Standard SQL-strängar använder enkla citattecken, dubbla citattecken är för identifierare (som tabell- och kolumnnamn); PostgreSQL följer standarden här, MySQL och SQLite är mindre strikta, andra databaser gör andra saker med varierande stränghet. I vilket fall som helst bör enstaka citattecken för SQL-strängbokstavar fungera likadant överallt.

Du använder dubbla citattecken på en SQL-sträng:

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

Du måste enstaka citattecken:

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

eller modernisera den och låt ActiveRecord ta hand om citatet:

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

Du måste förmodligen fixa offerten för den här också:

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

Återigen, att modernisera det är det enklaste sättet:

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

Jag gissar att du utvecklar på SQLite men distribuerar på PostgreSQL. Det är en dålig idé, utveckla och distribuera alltid på samma stack.




  1. SQL Server Failover Cluster Installation -4

  2. Oracle-tabellen eller -vyn existerar inte inifrån den lagrade proceduren

  3. Hur hanterar man valfria parametrar i SQL-fråga?

  4. Enkel indexeringsoptimering