sql >> Databasteknik >  >> RDS >> PostgreSQL

Rails Migrations:försökte ändra kolumntypen från sträng till heltal

Jag citerar manualen om ALTER TABLE :

En USING-klausul måste tillhandahållas om det inte finns någon implicit eller assignmentcast från gammal till ny typ.

Det du behöver är:

ALTER TABLE listings ALTER longitude TYPE integer USING longitude::int;
ALTER TABLE listings ALTER latitude  TYPE integer USING latitude::int;

Eller kortare och snabbare (för stora bord) med ett kommando:

ALTER TABLE listings ALTER longitude TYPE integer USING longitude::int
                    ,ALTER latitude  TYPE integer USING latitude::int;

Detta fungerar med eller utan data så länge alla poster är konverterbara till integer .
Om du har definierat en DEFAULT för kolumnen kan du behöva släppa och återskapa det för den nya typen.

Här är en bloggartikel om hur man gör detta med ActiveRecord.
Eller gå med @mus råd i kommentaren. Han kan sin Ruby. Jag är bara bra med PostgreSQL här.



  1. Hibernate, id, orakel, sekvens

  2. Konvertera SQL Server DateTime-objekt till BIGINT (.Net ticks)

  3. SQL Server 2008 kan inte logga in med nyskapad användare

  4. VISA DATABASER Motsvarar SQL Server – sp_databases