PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Trilhos 3.1. Heroku PGError:operador não existe:caractere variando =inteiro


Seu problema está aqui:
WHERE "reviews"."trip_id" = 32

e a mensagem de erro diz que:

então você criou seu trip_id coluna em reviews como uma string em vez de um inteiro. Isso funcionará bem no SQLite porque o sistema de tipos do SQLite é bastante solto, mas não funcionará no PostgreSQL, pois o PostgreSQL é um pouco mais rigoroso.

Você pode tentar adicionar uma migração para corrigir o tipo de trip_id :
def change
  change_column :reviews, :trip_id, :integer
end

e se isso não funcionar, solte e recrie a tabela:
def change
  drop_table :reviews
  create_table :reviews do |t|
    #...
    t.integer :trip_id
    #...
  end
end

Você também pode fazer um ALTER TABLE por meio de SQL bruto se tiver dados que deseja preservar e o change_column não funciona:
def change
  execute %q{
    alter table reviews
    alter column trip_id
    type int using cast(trip_id as int)
  }
end

Isso deve funcionar no PostgreSQL (mas não no SQLite), desde que você não tenha dados quebrados em seu trip_id .

Depois de resolver isso, você deve instalar o PostgreSQL e mudar seu ambiente de desenvolvimento para ele. Desenvolver em cima do SQLite e implantar no PostgreSQL (ou desenvolver em cima de um banco de dados e implantar em cima de qualquer outro banco de dados) é uma má ideia e causará todo tipo de dor e confusão.