sql >> データベース >  >> RDS >> PostgreSQL

Railsの移行:列のタイプを文字列から整数に変更しようとしました

    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だけが得意です。



    1. pyodbc.connect()は機能しますが、sqlalchemy.create_engine()。connect()は機能しません

    2. ORA-01008:すべての変数がバインドされているわけではありません。彼らは縛られている

    3. MySQLで小文字を大文字に変換する方法

    4. AT TIME ZONE – SQLServer2016の新しいお気に入りの機能