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.