sql >> Database >  >> RDS >> PostgreSQL

Heroku - ActiveRecord::StatementInvalid (PG::Error:ERROR:gevraagde kolom bestaat niet

Standaard SQL-strings gebruiken enkele aanhalingstekens, dubbele aanhalingstekens zijn voor identifiers (zoals tabel- en kolomnamen); PostgreSQL volgt hier de standaard, MySQL en SQLite zijn minder streng, andere databases doen andere dingen met wisselende mate van striktheid. In ieder geval zouden enkele aanhalingstekens voor letterlijke SQL-tekenreeksen overal hetzelfde moeten werken.

Je gebruikt dubbele aanhalingstekens in een SQL-string:

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

U moet enkele aanhalingstekens gebruiken:

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

of moderniseer het en laat ActiveRecord het citaat afhandelen:

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

Je zult waarschijnlijk ook de aanhalingstekens voor deze moeten corrigeren:

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

Nogmaals, moderniseren is de gemakkelijkste manier:

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

Ik vermoed dat u zich ontwikkelt op SQLite maar implementeert op PostgreSQL. Dat is een slecht idee, ontwikkel en implementeer altijd op dezelfde stack.




  1. MySQL-bestel berichten op meest recente opmerking OF laatst gepost

  2. Een left join uitvoeren in een veel-op-veel-tabel met voorwaarden

  3. MySQL-database exporteren vanuit XAMPP

  4. MySQL GROUP_CONCAT met COLUMN SPLIT