Je cite le manuel sur ALTER TABLE
:
Une clause USING doit être fournie s'il n'y a pas d'implicite ou d'assignation de l'ancien vers le nouveau type.
Ce dont vous avez besoin est :
ALTER TABLE listings ALTER longitude TYPE integer USING longitude::int; ALTER TABLE listings ALTER latitude TYPE integer USING latitude::int;
Ou plus court et plus rapide (pour les grandes tables) en une seule commande :
ALTER TABLE listings ALTER longitude TYPE integer USING longitude::int
,ALTER latitude TYPE integer USING latitude::int;
Cela fonctionne avec ou sans données tant que toutes les entrées sont convertibles en integer
.
Si vous avez défini un DEFAULT
pour la colonne, vous devrez peut-être la supprimer et la recréer pour le nouveau type.
Voici un article de blog expliquant comment procéder avec ActiveRecord.
Ou suivez les conseils de @mu dans le commentaire. Il connaît son Ruby. Je ne suis bon qu'avec PostgreSQL ici.