PostgreSQLの「column “oid” does not exist」エラー
上記サイトより
8.1以降のPostgreSQLでは、デフォルトではテーブルにoidが含まれなくなる模様。oidが存在すること前提で書いてあったスクリプトで“column “oid" does not exist”というエラーが発生した。これは default_with_oids がデフォルトONからOFFになったため
対応としては、スクリプトを書き換えるのが一番だが、対症療法としては以下。
ALTER TABLE hogehoge SET WITH OIDS;次回同じ作業をする場合は、(CREATE TABLEする前に、というかpostgresを起動する前に)postgresql.confの default_with_oids をONにしておけばよい。
上記サイトよりPostgresのOIDとは何ですか?
オブジェクト識別子 (OID) は PostgreSQL の内部でさまざまなシステムテーブルのプライマリキーとして使用されます。 また、OID システム列がユーザ作成のテーブルに追加されます (テーブルの作成時に WITHOUT OIDS が指定されていない場合)。 データ型 oid はオブジェクト識別子を表します。
PotgreSQL8.1以降のdefault_with_oidsパラメータについての記事↓
https://www.1×1.jp/blog/2007/08/pgsql81_oid.html
ちなみに、このエラーはPostgreSQLに対して実行するSQLツールによっても、発生したりしなかったりもするらしい。