PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Heroku - ActiveRecord ::StatementInvalid (PG ::Lỗi:ERROR:cột được yêu cầu không tồn tại

Chuỗi SQL tiêu chuẩn sử dụng dấu ngoặc kép đơn, dấu ngoặc kép dành cho các định danh (chẳng hạn như tên bảng và cột); PostgreSQL tuân theo tiêu chuẩn ở đây, MySQL và SQLite ít nghiêm ngặt hơn, các cơ sở dữ liệu khác làm những việc khác với mức độ nghiêm ngặt khác nhau. Trong mọi trường hợp, các dấu ngoặc kép cho các ký tự chuỗi SQL phải hoạt động giống nhau ở mọi nơi.

Bạn đang sử dụng dấu ngoặc kép trên một chuỗi SQL:

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

Bạn phải có một dấu ngoặc kép:

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

hoặc hiện đại hóa nó và để ActiveRecord giải quyết việc trích dẫn:

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

Có thể bạn cũng sẽ cần sửa phần trích dẫn cho cái này:

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

Một lần nữa, hiện đại hóa nó là cách dễ nhất:

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

Tôi đoán rằng bạn đang phát triển trên SQLite nhưng đang triển khai trên PostgreSQL. Đó là một ý tưởng tồi, hãy luôn phát triển và triển khai trên cùng một ngăn xếp.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. tạo bảng triệu trong cơ sở dữ liệu?

  2. Sự khác biệt giữa INSERT và COPY

  3. Db khác nhau để thử nghiệm trong Django?

  4. CHÈN LỆNH ::LỖI:giá trị cột không tồn tại

  5. postgresql mảng không đúng định dạng theo nghĩa đen trong tạo tổng hợp initcond