MT-3.1xに何が起こったか?

  • 投稿日:
  • by
  • カテゴリ:

MT-3.121にアップグレードしてから(いや3.1にしてから)初めて、テンプレートの修正を試みました。が、

Use of uninitialized value in unpack at /home/httpd/cgi-bin/mt/lib/MT/ObjectDriver/DBI/postgres.pm line 13.
というようなエラーで[保存]に失敗してしまうのです。

原因は、データベース内にありました。
アップグレードスクリプトの不備に起因しているのではないかと思いますが、あんまり突っ込んで調べていません。

とりあえず、問題の修正方法ですが、次のようにすることで解決します。なお、これはPostgreSQLをバックエンドに使っている場合で、それ以外の場合には、それぞれのバックエンドのやり方で修正することになります。もっともほかのバックエンドで同様の問題があるのかないのかは不明ですが。

$ psql db (dbはあなたのMTが利用しているDB名)
psql> update mt_template set template_created_on='2004-12-16 00:00:00', template_modified_on='2004-12-16 00:00:00'
psql-> where template_created_on is NULL; (2004-12-16 00:00:00 は適当な日時を指定してください)
UPDATE 83 (83はほかの数字になるでしょう、多分)
要するに、テンプレートがいつ作られていつ修正されたかという情報がないために、エラーが発生しているわけです。おそらくこの二つのカラムは3.1にアップグレードした際に追加されたものでしょうから、追加するときに適当な値を設定しなければならないものを、しなかったからエラーになっていたというわけです。

追記: 同様の問題で苦労されている方が他にもいらっしゃいました(^^;