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

Rails Migrations:forsøgte at ændre kolonnetypen fra streng til heltal

Jeg citerer manualen om ALTER TABLE :

En USING-klausul skal angives, hvis der ikke er nogen implicit eller assignmentcast fra gammel til ny type.

Det du har brug for er:

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

Eller kortere og hurtigere (for store borde) i én kommando:

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

Dette virker med eller uden data så længe alle indtastninger kan konverteres til integer .
Hvis du har defineret en DEFAULT for kolonnen, skal du muligvis droppe og genskabe den for den nye type.

Her er en blogartikel om, hvordan du gør dette med ActiveRecord.
Eller følg @mu's råd i kommentaren. Han kender sin Ruby. Jeg er kun god med PostgreSQL her.



  1. PostgreSQL og C# datatyper

  2. MOD() Funktion i Oracle

  3. Hvad er fordele og ulemper ved at udføre beregninger i sql vs. i din ansøgning

  4. SQL Server VÆLG SIDSTE N rækker