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

Đường ray 3.1. Heroku PGError:không tồn tại toán tử:ký tự thay đổi =số nguyên

Vấn đề của bạn là ở đây:

WHERE "reviews"."trip_id" = 32

và thông báo lỗi cho biết:

vì vậy bạn đã tạo trip_id của mình trong reviews dưới dạng một chuỗi chứ không phải là một số nguyên. Điều đó sẽ hoạt động tốt trong SQLite vì hệ thống kiểu của SQLite khá lỏng lẻo nhưng nó sẽ không hoạt động trong PostgreSQL vì PostgreSQL khá chặt chẽ hơn một chút.

Bạn có thể thử thêm một quá trình di chuyển để sửa loại trip_id :

def change
  change_column :reviews, :trip_id, :integer
end

và nếu điều đó không hiệu quả thì hãy thả và tạo lại bảng:

def change
  drop_table :reviews
  create_table :reviews do |t|
    #...
    t.integer :trip_id
    #...
  end
end

Bạn cũng có thể thực hiện ALTER TABLE thông qua SQL thô nếu bạn có dữ liệu muốn lưu giữ và change_column không hoạt động:

def change
  execute %q{
    alter table reviews
    alter column trip_id
    type int using cast(trip_id as int)
  }
end

Điều đó sẽ hoạt động trong PostgreSQL (nhưng không phải SQLite) miễn là bạn không có bất kỳ dữ liệu bị hỏng nào trong trip_id của mình .

Sau khi đã sắp xếp xong, bạn nên cài đặt PostgreSQL và chuyển môi trường phát triển của mình sang đó. Phát triển trên SQLite và triển khai lên PostgreSQL (hoặc phát triển trên cùng một cơ sở dữ liệu và triển khai trên bất kỳ cơ sở dữ liệu nào khác cho vấn đề đó) là một ý tưởng tồi và sẽ gây ra cho bạn tất cả các loại đau buồn và bối rối.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách nhận bình luận của vai trò từ cơ sở dữ liệu PostgreSQL

  2. chức năng postgres unaccent so với chuyển ngữ RoR

  3. Chuyển đổi loại. Tôi phải làm gì với giá trị PostgreSQL OID trong libpq trong C?

  4. Giá trị thích hợp cho -Infinity &Infinity trong Postgres

  5. Làm cách nào để ngăn CakePHP thoát dữ liệu khi lưu?