sql >> Base de Datos >  >> RDS >> PostgreSQL

Migraciones de Rails:intentó cambiar el tipo de columna de cadena a entero

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í.