| Su | Mo | Tu | We | Th | Fr | Sa |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
MovableTypeのバージョンを、3.11-jaから3.2-ja-2へ上げようとしたのだけど、どうもうまくいかず、結局1からインストールした。その記録を書いておくよ。
先ず。フツーに3.2-ja-2のパッケージを落としてきて、解凍して、mt-config.cgiを書いて、mt-check.cgiで環境がちゃんと整ってることをチェックして、mt-upgrade.cgiを実行した。そうしたら下のようなメッセージが出た。
アップグレード中にエラーが発生しました: ERROR: null value in column "template_modified_on" violates not-null constraint
mt-upgrade.cgiを再実行すると、以下のようになった。
アップグレード中にエラーが発生しました: レコードの保存中にエラーが発生しました: SQLエラーが発生しました: ERROR: null value in column "template_id" violates not-null constraint
あとは数回mt-upgrade.cgiを再実行しても、メッセージは同じまま。どうもnull禁止の制約が付いているところにnull値を入れようとしているように思われるので、直接データベースを弄って制約を解除しようとする。
[root@shalm MT2]# psql mt
でPostgreSQLにログイン。
テーブル名の一覧を出すと、mt_template、mt_template_upgradeがそれらしかったので、この2つのテーブルに付いている制約を外してやろうとする。荒っぽく以下のようにやる。
CREATE TABLE temp AS SELECT * FROM mt_template_upgrade;
DROP TABLE mt_template_upgrade;
CREATE TABLE mt_template_upgrade AS SELECT * FROM temp;
DROP TABLE temp;
CREATE TABLE temp AS SELECT * FROM mt_template;
DROP TABLE mt_template;
CREATE TABLE mt_template AS SELECT * FROM temp;
DROP TABLE temp;
そうしてmt-upgrade.cgiを実行する。以下のようになった。
アップグレード中にエラーが発生しました: ERROR: relation "mt_template_upgrade" already exists
"relation"ってのはテーブルのことを指す。要するにmt_template_upgradeが既に存在するからダメだと。仕方ないのでmt_template_upgradeをバックアップしつつ削除してもう一回実行する。
CREATE TABLE backup_template AS SELECT * FROM mt_template_upgrade;
DROP TABLE mt_template_upgrade;
バージョン: 3.2のデータベースからアップグレードします。
データベースをアップグレードします: MT::Template
デフォルト・テンプレート「Comment Preview Template」を登録します。
デフォルト・テンプレート「Comment Pending Template」を登録します。
デフォルト・テンプレート「Comment Error Template」を登録します。
デフォルト・テンプレート「Uploaded Image Popup Template」を登録します。
デフォルト・テンプレート「Comment Listing Template」を登録します。
デフォルト・テンプレート「Dynamic Pages Error Template」を登録します。
デフォルト・テンプレート「TrackBack Listing Template」を登録します。
アップグレード中にエラーが発生しました: Assertion *retlen+1 <= resultant_len+2 failed: file "quote.c", line 319 at lib/MT/ObjectDriver/DBI.pm line 341. at lib/MT/Upgrade.pm line 1340
これはmt-upgrade.cgiを再実行すると解消される。で、アップグレードに成功した旨のメッセージが出る。
ブラウザでmt.cgiアクセスしてみると、正常にログインできた。
ただし、テンプレートのデータが引き継がれていないので、
\o /home/shin/templates.txt;
select * from backup_template;
でbackup_templateの中身を/home/shin/templates.txtに書き出せる。あとは手作業で復旧する。だるい。それで、テンプレートを一通り設定して、再構築させようとすると怒られる。
Can't call method "build_dynamic" without a package or object reference at lib/MT/Blog.pm line 293
ソースコードをざっと見てみるが、良く分からずお手上げ。1からインストールしたほうが早いだろうと思ってそうした。

