sql >> Databasteknik >  >> RDS >> PostgreSQL

Räls 3.1. Heroku PGError:operatorn finns inte:teckenvarierande =heltal

Ditt problem är här:

WHERE "reviews"."trip_id" = 32

och felmeddelandet säger att:

så du har skapat ditt trip_id kolumnen i reviews som en sträng snarare än som ett heltal. Det kommer att fungera bra i SQLite eftersom SQLites typsystem är ganska löst men det kommer inte att fungera i PostgreSQL eftersom PostgreSQL är ganska strängare.

Du kan försöka lägga till en migrering för att fixa typen av trip_id :

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

och om det inte fungerar släpp och återskapa tabellen:

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

Du kan också göra en ALTER TABLE genom rå SQL om du har data som du vill bevara och change_column fungerar inte:

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

Det borde fungera i PostgreSQL (men inte SQLite) så länge du inte har några trasiga data i ditt trip_id .

När du har löst det, bör du installera PostgreSQL och byta din utvecklingsmiljö till det. Att utveckla ovanpå SQLite och distribuera till PostgreSQL (eller utveckla ovanpå en databas och distribuera ovanpå vilken annan databas för den delen) är en dålig idé och kommer att orsaka dig all slags sorg och förvirring.



  1. Hur RADIANS() fungerar i MariaDB

  2. Laravel med Docker-problem med att ansluta MySQL

  3. Felsökning av MySQL-replikering:Del ett

  4. PHP MySql (1045) Åtkomst nekad för användare