varchar型をint型にしようとしたらエラーが発生
「skill_code」という文字列型のカラムを数値型に変更しようと思い、以下を実行した。
ALTER TABLE users
ALTER COLUMN skill_code TYPE INT USING skill_code::integer;
すると、エラーが発生してしまった。
details: pq: default for column "skill_code" cannot be cast automatically to type integer
特にコマンドは間違ってないはずだが。。。なぜ?
原因&解決方法
結論から言うと、原因はskill_codeというカラムにDefault制約が貼られていたから。
なので、まずはDefault制約を剥がす必要がある。そしてその後にカラム型を変更する。
ALTER TABLE users
ALTER COLUMN skill_code DROP DEFAULT, //Default制約削除
ALTER COLUMN skill_code TYPE INT USING skill_code::integer; //文字列カラムを数値カラムに変更
コマンドを上記のように修正したところ、期待通りにskill_codeカラムが文字列型から数値型に変更することができた。