PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Heroku - ActiveRecord::StatementInvalid (PG::Error:ERROR:kolom yang diminta tidak ada

String SQL standar menggunakan tanda kutip tunggal, tanda kutip ganda untuk pengidentifikasi (seperti nama tabel dan kolom); PostgreSQL mengikuti standar di sini, MySQL dan SQLite kurang ketat, database lain melakukan hal lain dengan jumlah keketatan yang bervariasi. Bagaimanapun, tanda kutip tunggal untuk literal string SQL harus bekerja sama di mana saja.

Anda menggunakan tanda kutip ganda pada string SQL:

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

Anda harus tanda kutip tunggal:

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

atau memodernkannya dan biarkan ActiveRecord menangani kutipan:

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

Anda mungkin perlu memperbaiki kutipan untuk yang ini juga:

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

Sekali lagi, memodernisasinya adalah cara termudah:

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

Saya menduga Anda mengembangkan di SQLite tetapi menggunakan PostgreSQL. Itu ide yang buruk, selalu kembangkan dan terapkan pada tumpukan yang sama.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perlu penjelasan tentang tipe karakter di PostgreSQL

  2. Bisakah ekstensi bahasa JavaScript plv8 memanggil perpustakaan pihak ketiga?

  3. Kesalahan saat mengkompilasi Qt 5.10.0 statis dengan PostgreSQL

  4. Bagaimana saya mendapatkan psycopg2 logging dari waktu eksekusi kueri?

  5. Postgresql membuat ekstensi gagal