現在地

PostgreSQL 9でDrupal 6が動かない件

作成者:mattz 作成日:金, 10/19/2012 - 14:40

新しくDrupalのサイトを構築するにあたって、あまり深く考えずにPostgreSQLの9を選んでしまった(なんでMySQLじゃないのかとかいうのには諸般の事情とお答えしておきます)のですが、動かない。

最初はさっぱり原因が分からなくて途方に暮れていたのですが、調べていくうちに大体原因がつかめた。

Drupalは色々なキャッシュデータをserializeしてbytea型のカラムに格納して保持しています。PostgreSQLの8までは、bytea型のカラムに値を格納するときはエスケープクォートして格納という形だったのが、9からはhexに変換して格納するという形にデフォルトの形式が変わりました。

これによって、chacheテーブルから取り出した値をunserializeできないというエラーになっていました。

bytea型に格納する形式を、旧来と同様な'escape'形式に変更するというのもできないことはない(ALTER DATABASE database_name SET bytea_output = 'escape')ようなのですが、他にもこのようなハマリポイントがあると厄介ですし、そのたびに検証して対策するという時間も取れそうにないので、結局のところPostgreSQLのバージョンを(実績のある)8系にすることにしました。

ちなみにDrupal 7では、この問題には対応済みのようです。

タグ: