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

Rel 3.1. Heroku PGError:operator tidak ada:karakter bervariasi =integer

Masalah Anda ada di sini:

WHERE "reviews"."trip_id" = 32

dan pesan kesalahan mengatakan bahwa:

jadi Anda telah membuat trip_id kolom di reviews sebagai string bukan sebagai bilangan bulat. Itu akan berfungsi dengan baik di SQLite karena sistem tipe SQLite agak longgar tetapi tidak akan berfungsi di PostgreSQL karena PostgreSQL sedikit lebih ketat.

Anda dapat mencoba menambahkan migrasi untuk memperbaiki jenis trip_id :

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

dan jika tidak berhasil, jatuhkan dan buat ulang tabel:

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

Anda juga dapat melakukan ALTER TABLE melalui SQL mentah jika Anda memiliki data yang ingin Anda pertahankan dan change_column tidak berfungsi:

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

Itu akan berfungsi di PostgreSQL (tetapi bukan SQLite) selama Anda tidak memiliki data yang rusak di trip_id Anda .

Setelah Anda menyelesaikannya, Anda harus menginstal PostgreSQL dan mengalihkan lingkungan pengembangan Anda ke sana. Mengembangkan di atas SQLite dan menerapkan ke PostgreSQL (atau mengembangkan di atas satu database dan menerapkan di atas database lain dalam hal ini) adalah ide yang buruk dan akan menyebabkan Anda berbagai kesedihan dan kebingungan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menggunakan daftar putih dan pernyataan siap pakai dengan Postgresql di php?

  2. SQL pilih elemen di mana jumlah bidang kurang dari N

  3. Meneliti kelambatan PostGIS (edisi 2019)

  4. Bagaimana menjalankan perintah PostgreSQL RAISE secara dinamis

  5. Pilih baris acak untuk setiap grup