PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Migrações Rails:tentei mudar o tipo de coluna de string para integer


Cito o manual sobre ALTER TABLE :

Uma cláusula USING deve ser fornecida se não houver uma atribuição implícita ou de atribuição do tipo antigo para o novo.

O que você precisa é:
ALTER TABLE listings ALTER longitude TYPE integer USING longitude::int;
ALTER TABLE listings ALTER latitude  TYPE integer USING latitude::int;

Ou mais curto e mais rápido (para tabelas grandes) em um comando:
ALTER TABLE listings ALTER longitude TYPE integer USING longitude::int
                    ,ALTER latitude  TYPE integer USING latitude::int;

Isso funciona com ou sem dados desde que todas as entradas sejam conversíveis para integer .
Se você definiu um DEFAULT para a coluna, talvez seja necessário descartar e recriá-la para o novo tipo.

Aqui está o artigo do blog sobre como fazer isso com o ActiveRecord.
Ou vá com o conselho de @mu no comentário. Ele conhece seu Ruby. Eu só sou bom com o PostgreSQL aqui.