sql >> Databáze >  >> RDS >> PostgreSQL

Rails Migrations:pokusili se změnit typ sloupce z řetězce na celé číslo

Cituji manuál o ALTER TABLE :

Pokud neexistuje žádné implicitní nebo přiřazení ze starého na nový typ, musí být poskytnuta klauzule USING.

Co potřebujete:

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

Nebo kratší a rychlejší (pro velké stoly) jedním příkazem:

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

Toto funguje s daty nebo bez nich pokud jsou všechny položky převoditelné na integer .
Pokud jste definovali DEFAULT pro sloupec, možná jej budete muset vypustit a znovu vytvořit pro nový typ.

Zde je článek na blogu o tom, jak to udělat s ActiveRecord.
Nebo použijte radu @mu v komentáři. Zná svou Ruby. Zde jsem dobrý pouze s PostgreSQL.



  1. Spokojenost vede k:Riziko se stává realitou

  2. Výběr procesoru pro SQL Server 2014 – část 2

  3. LIMIT 10..20 na serveru SQL

  4. Výpočet průměrných nákladů na zásoby v SQL