Cito el manual sobre ALTER TABLE
:
Se debe proporcionar una cláusula USING si no hay conversión implícita o de asignación del tipo antiguo al nuevo.
Lo que necesitas es:
ALTER TABLE listings ALTER longitude TYPE integer USING longitude::int; ALTER TABLE listings ALTER latitude TYPE integer USING latitude::int;
O más corto y más rápido (para mesas grandes) en un solo comando:
ALTER TABLE listings ALTER longitude TYPE integer USING longitude::int
,ALTER latitude TYPE integer USING latitude::int;
Esto funciona con o sin datos siempre que todas las entradas se puedan convertir a integer
.
Si ha definido un DEFAULT
para la columna, es posible que tenga que soltar y volver a crear eso para el nuevo tipo.
Aquí hay un artículo de blog sobre cómo hacer esto con ActiveRecord.
O sigue el consejo de @mu en el comentario. Conoce su Ruby. Solo soy bueno con PostgreSQL aquí.