PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Migrazioni Rails:provato a cambiare il tipo di colonna da stringa a intera

Cito il manuale su ALTER TABLE :

È necessario fornire una clausola USING se non è presente un cast implicito o di assegnazione dal vecchio al nuovo tipo.

Quello che ti serve è:

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

O più breve e veloce (per tavoli grandi) in un comando:

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

Questo funziona con o senza dati purché tutte le voci siano convertibili in integer .
Se hai definito un DEFAULT per la colonna, potrebbe essere necessario eliminarla e ricrearla per il nuovo tipo.

Ecco l'articolo del blog su come farlo con ActiveRecord.
O segui i consigli di @mu nel commento. Conosce il suo Rubino. Sono bravo solo con PostgreSQL qui.