sql >> Database >  >> RDS >> PostgreSQL

Sporen 3.1. Heroku PGError:operator bestaat niet:karakter variërend =geheel getal

Uw probleem is hier:

WHERE "reviews"."trip_id" = 32

en de foutmelding zegt dat:

dus je hebt je trip_id . aangemaakt kolom in reviews als een string in plaats van als een geheel getal. Dat werkt prima in SQLite omdat het typesysteem van SQLite nogal losjes is, maar het zal niet werken in PostgreSQL omdat PostgreSQL een stuk strenger is.

U kunt proberen een migratie toe te voegen om het type trip_id te corrigeren :

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

en als dat niet werkt, laat dan de tabel vallen en maak hem opnieuw:

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

U kunt ook een ALTER TABLE uitvoeren via onbewerkte SQL als u gegevens heeft die u wilt behouden en de change_column werkt niet:

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

Dat zou moeten werken in PostgreSQL (maar niet in SQLite) zolang je geen gebroken gegevens hebt in je trip_id .

Als je dat eenmaal hebt geregeld, moet je PostgreSQL installeren en je ontwikkelomgeving daarop overschakelen. Ontwikkelen bovenop SQLite en implementeren naar PostgreSQL (of ontwikkelen bovenop één database en implementeren bovenop een andere database) is een slecht idee en zal u allerlei soorten verdriet en verwarring bezorgen.



  1. Hoe een door komma's gescheiden tekenreeks in Oracle te splitsen

  2. Selecteer records op basis van laatste datum

  3. Willekeurige datum invoegen/bijwerken in MySQL

  4. MySQL Tijd van oud record ophalen?