ALTER TABLE
に関するマニュアルを引用します :
古いタイプから新しいタイプへの暗黙的または割り当てキャストがない場合は、USING句を指定する必要があります。
必要なものは次のとおりです:
ALTER TABLE listings ALTER longitude TYPE integer USING longitude::int; ALTER TABLE listings ALTER latitude TYPE integer USING latitude::int;
または、1つのコマンドで(大きなテーブルの場合)より短く、より速く:
ALTER TABLE listings ALTER longitude TYPE integer USING longitude::int
,ALTER latitude TYPE integer USING latitude::int;
これはデータの有無にかかわらず機能します すべてのエントリがinteger
に変換可能である限り 。DEFAULT
を定義した場合 列の場合、新しいタイプの列を削除して再作成する必要がある場合があります。
これは、ActiveRecordでこれを行う方法に関するブログ記事です。
または、コメントで@muのアドバイスを参照してください。彼は自分のRubyを知っています。私はここでPostgreSQLだけが得意です。