Ihr Problem ist hier:
WHERE "reviews"."trip_id" = 32
und die Fehlermeldung besagt:
Sie haben also Ihre trip_id
erstellt Spalte in reviews
als String statt als Integer. Das wird in SQLite gut funktionieren, weil das Typsystem von SQLite ziemlich locker ist, aber es wird nicht in PostgreSQL funktionieren, da PostgreSQL etwas strenger ist.
Sie könnten versuchen, eine Migration hinzuzufügen, um den Typ von trip_id
zu korrigieren :
def change
change_column :reviews, :trip_id, :integer
end
und wenn das nicht funktioniert, löschen Sie die Tabelle und erstellen Sie sie neu:
def change
drop_table :reviews
create_table :reviews do |t|
#...
t.integer :trip_id
#...
end
end
Sie können ALTER TABLE auch über rohes SQL ausführen, wenn Sie Daten haben, die Sie beibehalten möchten, und die change_column
funktioniert nicht:
def change
execute %q{
alter table reviews
alter column trip_id
type int using cast(trip_id as int)
}
end
Das sollte in PostgreSQL (aber nicht in SQLite) funktionieren, solange Sie keine fehlerhaften Daten in Ihrer trip_id
haben .
Sobald Sie das geklärt haben, sollten Sie PostgreSQL installieren und Ihre Entwicklungsumgebung darauf umstellen. Die Entwicklung auf SQLite und die Bereitstellung auf PostgreSQL (oder die Entwicklung auf einer Datenbank und die Bereitstellung auf einer anderen Datenbank) ist eine schlechte Idee und wird Ihnen alle Arten von Kummer und Verwirrung bereiten.