sql >> Database >  >> RDS >> PostgreSQL

Rails Migrations:geprobeerd om het type kolom te veranderen van string naar integer

Ik citeer de handleiding over ALTER TABLE :

Er moet een USING-clausule worden opgegeven als er geen impliciete of toewijzing van het oude naar het nieuwe type is.

Wat je nodig hebt is:

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

Of korter en sneller (voor grote tafels) in één commando:

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

Dit werkt met of zonder gegevens zolang alle invoeren converteerbaar zijn naar integer .
Als u een DEFAULT . heeft gedefinieerd voor de kolom, moet u die mogelijk verwijderen en opnieuw maken voor het nieuwe type.

Hier is een blogartikel over hoe je dit kunt doen met ActiveRecord.
Of volg @mu's advies in de opmerking. Hij kent zijn Ruby. Ik ben hier alleen goed met PostgreSQL.



  1. Hoe de som van meerdere kolommen in een tabel in SQL Server 2005 te vinden?

  2. Disaster Recovery Planning voor MySQL &MariaDB

  3. Hoe het Amazon RDS-hoofdgebruikerswachtwoord opnieuw in te stellen

  4. Som over waarden per maand in milliseconden