PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Релси 3.1. Heroku PGError:операторът не съществува:вариращ знак =цяло число

Вашият проблем е тук:

WHERE "reviews"."trip_id" = 32

и съобщението за грешка казва, че:

значи сте създали своя trip_id колона в reviews като низ, а не като цяло число. Това ще работи добре в SQLite, защото системата от типове на SQLite е доста свободна, но няма да работи в PostgreSQL, тъй като PostgreSQL е доста по-строг.

Можете да опитате да добавите миграция, за да коригирате типа на trip_id :

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

и ако това не работи, пуснете и създайте отново таблицата:

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

Можете също така да направите ALTER TABLE чрез необработен SQL, ако имате данни, които искате да запазите, и change_column не работи:

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

Това трябва да работи в PostgreSQL (но не и в SQLite), стига да нямате повредени данни във вашия trip_id .

След като сте решили това, трябва да инсталирате PostgreSQL и да превключите вашата среда за разработка към това. Разработването върху SQLite и внедряването в PostgreSQL (или разработването върху една база данни и внедряването върху която и да е друга база данни за този въпрос) е лоша идея и ще ви причини всякакви скръб и объркване.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. подзаявката в FROM трябва да има псевдоним

  2. Масивът не се запазва в базата данни

  3. Използвайте PostgreSQL SSL връзка в ръжда със самоподписани сертификати

  4. Елиминирайте двойните кавички от json поле по селективен начин в PostgreSQL

  5. Използване на условие If в клауза where