sql >> Base de Datos >  >> RDS >> PostgreSQL

Rieles 3.1. Heroku PGError:el operador no existe:carácter variable =entero

Tu problema está aquí:

WHERE "reviews"."trip_id" = 32

y el mensaje de error dice que:

por lo que ha creado su trip_id columna en reviews como una cadena en lugar de como un entero. Eso funcionará bien en SQLite porque el sistema de tipos de SQLite es bastante flexible, pero no funcionará en PostgreSQL, ya que PostgreSQL es un poco más estricto.

Podría intentar agregar una migración para corregir el tipo de trip_id :

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

y si eso no funciona, suelte y vuelva a crear la tabla:

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

También puede hacer ALTER TABLE a través de SQL sin formato si tiene datos que desea conservar y el change_column no funciona:

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

Eso debería funcionar en PostgreSQL (pero no en SQLite) siempre que no tenga datos rotos en su trip_id .

Una vez que haya resuelto eso, debe instalar PostgreSQL y cambiar su entorno de desarrollo a eso. Desarrollar sobre SQLite e implementar en PostgreSQL (o desarrollar sobre una base de datos e implementar sobre cualquier otra base de datos) es una mala idea y le causará todo tipo de molestias y confusión.