PostgreSQL

【エラー解決】PostgreSQLで column xxx cannot be cast to type zzz

PostgreSQL カラムのデータ型変更の方法

基本的に変更前と変更後のデータ型に互換性がある場合は次のクエリで実施可能(例えばintからbigintへの変更等)

ALTER TABLE [対象テーブル名] ALTER COLUMN [対象列名] TYPE [新しいデータ型];

クエリを実施する以外にGUIツール等でも変更が可能。
しかし、変更前と変更後で互換性がない場合は上記のクエリでデータ型の変更は実施できない。GUIでもおそらく不可能だろう。

互換性のないデータ型変更

例えば元々TestテーブルのColumn001のデータ型をtextからintに変更しようとした場合、下記のエラーが出力されるだろう。

ERROR: column “Column001” cannot be cast to type int

この様に互換性のないデータ型で変更する場合は以下のクエリの実行が必要

ALTER TABLE Test
  ALTER COLUMN Column001 TYPE int USING Column001::int;

USINGを使用して変更後のデータ型を明示的に記載する必要がある。