PostgreSQLでテーブルの型をintegerにしたらPG::DatatypeMismatch: ERRORで失敗した

テーブルでstring型 を integer型 に変更しようとしたらマイグレーションができませんでした。

== 20210213101041 ChangeDatatypeStatusOfScores: migrating =====================
-- change_column(:scores, :status, :integer)
rails aborted!
StandardError: An error has occurred, this and all later migrations canceled:

PG::DatatypeMismatch: ERROR:  column "status" cannot be cast automatically to type integer
HINT:  You might need to specify "USING status::integer".


エラー文には
「statusカラムは自動的に整数型にできないよ」
「ヒント:USING句を使用しましょう」
というようなことが書かれています。
ヒントのまんま"USING status::integer"を使ってみましたが、マイグレーションできませんでした...


調べてみたところ下記のように記述するようです。

変更したいデータ型 CAST(カラム名 AS 変更したいデータ型)

CAST 関数は引数に指定した値(カラム名)を別のデータ型に変換するために使用します。


class ChangeDatatypeStatusOfScores < ActiveRecord::Migration[6.0]
  def change
 #  change_column :scores, :status, :integer    (変更前)
    change_column :scores, :status, "integer USING CAST(status AS integer)"
  end
end

これでデータ型の変更ができました。