MovableType3.11-jaにアップグレードして色々いじってみたのだが、なんかテンプレートの保存をしようとすると
オブジェクトの保存に失敗しました: Update failed on SQL error ERROR: date/time field value out of range: "0000-00-00 00:00:00" Use of uninitialized value in unpack at /var/www/hogehoge/lib/MT/ObjectDriver/DBI/postgres.pm line 13. Argument "" isn't numeric in sprintf at /var/www/hogehoge/lib/MT/ObjectDriver/DBI/postgres.pm line 13.
って言うエラーが出るようになってしまった。
postgres.pmの該当する行には、
sub ts2db { sprintf '%04d-%02d-%02d %02d:%02d:%02d', unpack 'A4A2A2A2A2A2', $_[1]; }
ってのがあって、どうもここに正しい値が渡ってないという事は分かるんだけど、この関数どこから呼んだときに問題が起こるのかが分からない。
エントリーの追加のときとかはエラーが出てないのでテンプレートの変更に関する記述を重点的に調べればいいのだろうけど・・・
PostgresSQLのエラーログにも確かにそういうエラーが出ているけどこれだけではなんとも。
とりあえずlibディレクトリをだけを3.01に戻してみてエラーが出ないことを確認。やはりlib/MT/Template.pm、lib/MT/TemplateMap.pm、lib/MT/Template/Content.pmが怪しいよなと言うことで、1つずつバージョンを変えてみて原因特定作業をすすめる。
その結果悪いのはlib/MT/Template.pmであると。(TemplateMap.pmは変更されてなかった)
diffをとると
4c4 < # $Id: Template.pm,v 1.45 2004/08/25 02:06:40 ezra Exp $ --- > # $Id: Template.pm,v 1.42 2004/04/29 02:42:57 ezra Exp $ 29c29 < 'rebuild_me', 'build_dynamic' --- > 'rebuild_me', 35d34 < build_dynamic => 1, 37d35 < audit => 1,
これもまた1つずつ試してみた結果、最終的に
audit => 1,
をコメントアウトすることで問題解決。まずは一安心と言うところだが、この行ってコメントアウトしちゃって問題ないんでしょうか・・・
根本的な解決方法を教えてくださった方がいるのでそちらの方法を結局採用。
2004/11/01追記
コメントする