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

Rotaie 3.1. Heroku PGError:l'operatore non esiste:carattere variabile =intero

Il tuo problema è qui:

WHERE "reviews"."trip_id" = 32

e il messaggio di errore dice che:

quindi hai creato il tuo trip_id colonna in reviews come stringa anziché come numero intero. Funzionerà bene in SQLite perché il sistema dei tipi di SQLite è piuttosto lento ma non funzionerà in PostgreSQL poiché PostgreSQL è un po' più severo.

Potresti provare ad aggiungere una migrazione per correggere il tipo di trip_id :

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

e se ciò non funziona, rilascia e ricrea la tabella:

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

Puoi anche fare un ALTER TABLE tramite SQL grezzo se hai dati che vuoi preservare e change_column non funziona:

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

Dovrebbe funzionare in PostgreSQL (ma non in SQLite) fintanto che non hai dati interrotti nel tuo trip_id .

Una volta che hai risolto, dovresti installare PostgreSQL e passare a quello il tuo ambiente di sviluppo. Sviluppare su SQLite e distribuire su PostgreSQL (o sviluppare su un database e distribuire su qualsiasi altro database per quella materia) è una cattiva idea e ti causerà ogni sorta di dolore e confusione.