MT3.1にして以来テンプレートを保存しようとするとエラーがでてしまうので、Perlソースを一部コメントアウトして対応していたのだが、何か副作用がありそうで気持ち悪いものがあった。
そしたら今日トラックバックを受けたサイトに興味深いことが書いてあるではないか。
どうやらMTバージョンアップに失敗(仕様?)のようで PostgreSQL特有の問題のようす・・
夜行Blog様によると日付フォーマット云々が関係しているとか そういえばPostgreSQLってtimestampの仕様がバージョンによってかなり違うよねぇ
ということで夜行Blog様の案を採用! 散財流生様はソースを追いかけられて凄そうなのだけれど ほかの影響が怖いので見送ることに
おお、もっとスマートな方法があるのか、ということでTBしてくれたやなぎもの糯さんに感謝しつつ、夜行Blogをみてみる。
夜行Blog: MovableTypeアップデート失敗っぽいその後恐らく元のデータを読み込んだんだけど値が入っていないため日付のフォーマットを整える関数に引数としてブランクを渡してしまい、その結果0000-00-00 00:00:00なんて値を格納しようとしてエラーになっていたのではないでしょうか。(根拠なし)
というわけでもし僕と同じような現象にぶちあたってお困りの方がいらっしゃいましたらmt_templateのtemplate_created_onとtemplate_modified_onのフィールドに現在の時刻でも格納してあげると解決するかもしれません。おそらくこのフィールドはテンプレートが作成された日付と修正された日付が格納されているものと思われます。ふむふむ。早速psqlコマンドでPostgreSQLに接続して街頭箇所にインサート。
$ psql blogdb blogdb=# select template_modified_on from mt_template; template_modified_on ---------------------- (中略) 2004-10-20 00:52:09 2004-10-20 00:52:09 (18 rows)確かにtemplate_modified_onとtempalte_create_onの最初の16列はそれぞれ空列になっている。そこでとりあえず現在時刻で上書き
blogdb=# UPDATE mt_template SET template_created_on = '2004-10-26 02:09:00' ; UPDATE 18 blogdb=# select template_created_on from mt_template; template_created_on --------------------- 2004-10-26 02:09:00 (中略) 2004-10-26 02:09:00 (18 rows) blogdb=# UPDATE mt_template SET template_modified_on = '2004-10-26 02:09:00' ; UPDATE 18 blogdb=# select template_modified_on from mt_template; template_modified_on ---------------------- 2004-10-26 02:09:00 (中略) 2004-10-26 02:09:00 (18 rows) blogdb=# \qで、Template.pmを元に戻した上で、試しにテンプレートを更新してみると今までの問題発生がウソの様に問題なく更新できる。すばらしい。
しかし、やなぎもの糯さんや夜行さんも言ってるけど、このくらいアップデートスクリプトに仕込んで自動で上書きするようにしておいてくれよ・・・
TBありがとうございます。問題解決したみたいで何よりです。
Tバックは余計なお世話かなとも思いましたが
数少ない?Postgreユーザ同士情報を共有するのも乙なものかなと思ってTバックしてしまいました
>gimo@糯さん
やっぱりMT@Pstgreユーザは少ないのですかね。
今後もバージョンアップのたびごとに問題に直面しそうな悪い予感もするので、そのときはよろしくお願いします。
困っていた所にコメントいただき、ありがとうございました。
もう焦りまくって、新しい記事にまで目が行きませんでした。
MySQLの文法を良く理解せずにオロオロ仮運用していますが、このエントリーのpsqlコマンドを見て本当に安心しました。
もう明るくなりかけているので、明日落ち着いて実践してみます!