sql >> Databáze >  >> RDS >> PostgreSQL

Kolejnice 3.1. Heroku PGError:operátor neexistuje:znak proměnlivý =celé číslo

Váš problém je zde:

WHERE "reviews"."trip_id" = 32

a chybová zpráva říká:

takže jste vytvořili své trip_id ve sloupci reviews jako řetězec spíše než jako celé číslo. To bude fungovat dobře v SQLite, protože typový systém SQLite je dost volný, ale nebude fungovat v PostgreSQL, protože PostgreSQL je o něco přísnější.

Můžete zkusit přidat migraci a opravit typ trip_id :

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

a pokud to nefunguje, stáhněte a znovu vytvořte tabulku:

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

Můžete také provést ALTER TABLE prostřednictvím nezpracovaného SQL, pokud máte data, která chcete zachovat, a change_column nefunguje:

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

To by mělo fungovat v PostgreSQL (ale ne SQLite), pokud ve svém trip_id nemáte žádná nefunkční data .

Jakmile to budete mít vyřešené, měli byste nainstalovat PostgreSQL a přepnout na něj své vývojové prostředí. Vyvíjet nad SQLite a nasazovat do PostgreSQL (nebo vyvíjet nad jednou databází a nasazovat na jakoukoli jinou databázi) je špatný nápad a způsobí vám nejrůznější zármutek a zmatek.



  1. org.json.JSONException:Hodnotu <br typu java.lang.String nelze převést na JSONObject

  2. #1062 - Duplicitní záznam 0 pro klíč 'PRIMARY'

  3. Vygenerujte náhodné číslo v rozsahu 1-10

  4. MySQL NAČTE DATA LOKÁLNÍ VSTUPNÍ SOUBOR Python