Ich zitiere das Handbuch zu ALTER TABLE
:
Eine USING-Klausel muss bereitgestellt werden, wenn es keine implizite oder Zuordnungsumwandlung vom alten zum neuen Typ gibt.
Was Sie brauchen ist:
ALTER TABLE listings ALTER longitude TYPE integer USING longitude::int; ALTER TABLE listings ALTER latitude TYPE integer USING latitude::int;
Oder kürzer und schneller (für große Tabellen) in einem Befehl:
ALTER TABLE listings ALTER longitude TYPE integer USING longitude::int
,ALTER latitude TYPE integer USING latitude::int;
Dies funktioniert mit oder ohne Daten solange alle Einträge in integer
konvertierbar sind .
Falls Sie einen DEFAULT
definiert haben für die Spalte müssen Sie diese möglicherweise löschen und für den neuen Typ neu erstellen.
Hier ist ein Blog-Artikel darüber, wie man das mit ActiveRecord macht.
Oder folgen Sie den Ratschlägen von @mu im Kommentar. Er kennt seinen Rubin. Ich kenne mich hier nur mit PostgreSQL aus.