sql >> Database teknologi >  >> RDS >> PostgreSQL

Skinner 3.1. Heroku PGError:Operator findes ikke:tegnvarierende =heltal

Dit problem er her:

WHERE "reviews"."trip_id" = 32

og fejlmeddelelsen siger, at:

så du har oprettet dit trip_id kolonne i reviews som en streng snarere end som et heltal. Det vil fungere fint i SQLite, fordi SQLites typesystem er ret løst, men det vil ikke fungere i PostgreSQL, da PostgreSQL er en del strengere.

Du kan prøve at tilføje en migrering for at rette typen trip_id :

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

og hvis det ikke virker, så slip og genskab tabellen:

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

Du kan også lave en ALTER TABLE gennem rå SQL, hvis du har data, som du vil bevare og change_column virker ikke:

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

Det burde fungere i PostgreSQL (men ikke SQLite), så længe du ikke har ødelagte data i dit trip_id .

Når du har ordnet det, bør du installere PostgreSQL og skifte dit udviklingsmiljø til det. At udvikle oven på SQLite og implementere til PostgreSQL (eller udvikle oven på én database og implementere oven på en hvilken som helst anden database for den sags skyld) er en dårlig idé og vil forårsage alle mulige former for sorg og forvirring.



  1. Sammenkæd mange rækker i en enkelt tekststreng med gruppering

  2. Find rækker med udskydende datointervaller, og akkumuler deres varigheder

  3. ElasticSearch PutMapping API:MapperParsingException Rodtypetilknytning er ikke tom efter parsing

  4. Find parameternavnene for en lagret procedure