1番はじめに凹んだ(失敗した)所。
『 mt-db2sql.cgi line 46. 』とエラーが出たのは単にマニュアルにあるように mt-config.cgi の設定を PostgreSQL に指定していなかったため。DBI 関係のエラーが出ていたので、「おりょ、DBI はいっとらんがかのー?」と思っていたが、どうやら違った。mt-config.cgi を PostgreSQL 用に書き換えて対応完了。
2番目に凹んだ所。
『 invalid byte sequence for encoding "EUC_JP" 』
mtzem という名前で PostgreSQL 上にデータベースを作っていたのですが、
当初は EUC_JP で PostgreSQL 側のデータベースを作成していたので、
[postgres@sv pgsql]$ psql -l
List of databases
Name | Owner | Encoding
-----------+----------+----------
mt | postgres | EUC_JP
mtzem | mtzem | EUC_JP
どうも正しい文字コードじゃないよ、というエラーが出ていた。
そういえば、Movable Type は UNICODE(UTF-8)で管理していたな、というところで、データベースの再作成。
$ createdb -E unicode --owner mtzem mtzem
CREATE DATABASE
$ psql -l
List of databases
Name | Owner | Encoding
-----------+----------+----------
mt | postgres | EUC_JP
mtzem | mtzem | UNICODE
ま、こんな感じで "-E unicode" オプションをつけてエンコードを変更。
これで、あとは、この書き込みが正常にされていれば問題なし。
3番目に凹んだ所。
『 SQLエラーが発生しました: ERROR: null value in column "entry_id" violates not-null constraint 』
ん、おや? DB(PostgreSQL) 側か?
mtzem=# SELECT * from mt_entry;
・・・表示結果多すぎ、、で
entry_id,entry_title
mtzem=# SELECT entry_id,entry_title from mt_entry;
entry_id | entry_title
----------+------------------------------------------------------------------------------------------
1 | blog移行テスト
(snip)
9 | Windowsサブ機が故障~HDDよ、さらば。
(25 rows)
mtzem=# SELECT count(*) from mt_entry ;
count
-------
25
(1 row)
ん~、entry_id には何も問題が無さそうなんだけど、、、
ログを確認しても問題はなさそう。
もう一度 mt-cfg.cgi を見て、
##### BERKELEYDB #####
#DataSource /path/to/mt-db
が残っていたのでコメントアウトした。
けれども、やっぱりエラー状況は変わらず。
『 SQLエラーが発生しました: ERROR: null value in column "entry_id" violates not-null constraint 』
mtzem=# SELECT * from mt_entry where entry_id is null;
(0 rows)
別に空っぽのエントリが入っているわけではない。
うーん。困ったにょ。
mtzem=# \dt;
List of relations
Schema | Name | Type | Owner
--------+-----------------+-------+-------
public | mt_author | table | mtzem
public | mt_blog | table | mtzem
public | mt_category | table | mtzem
public | mt_comment | table | mtzem
public | mt_config | table | mtzem
public | mt_entry | table | mtzem
public | mt_fileinfo | table | mtzem
public | mt_ipbanlist | table | mtzem
public | mt_log | table | mtzem
public | mt_notification | table | mtzem
public | mt_objecttag | table | mtzem
public | mt_permission | table | mtzem
public | mt_placement | table | mtzem
public | mt_plugindata | table | mtzem
public | mt_session | table | mtzem
public | mt_tag | table | mtzem
public | mt_tbping | table | mtzem
public | mt_template | table | mtzem
public | mt_templatemap | table | mtzem
public | mt_trackback | table | mtzem
(20 rows)
うーん、この中から関連性のありそうなテーブルを粗探しするしかないのか。。。
mtzem=# select entry_id,entry_author_id from mt_entry where entry_id is null;
entry_id | entry_author_id
----------+-----------------
(0 rows)
どうしてなんだろうなぁ。。
ブラウザの「読み込み/書き出し」から「エントリーの書き出し」をしても、件数は同じなんだけど。何が違うんだろう。
pg_hba.conf の既述に従わない設定を試してみる。
書き込み結果
『Got an error: データベース接続の設定に誤りがあります: エラーが発生しました: FATAL: no pg_hba.conf entry for host "210.239.46.254", user "mtzem", database "mtzem"』
ということで、PostgreSQL 8 側の問題ではない。
やっぱ、MovableType の何かが原因なのかな?
やめ、
もう一度やりなおし。
DB消す。
[postgres@sv pgsql]$ dropdb mtzem
DROP DATABASE
ユーザも消す。
[postgres@sv pgsql]$ dropuser mtzem
DROP USER
ユーザ作り直す。
[postgres@sv pgsql]$ createuser -P --no-adduser --no-createdb mtzem
Enter password for new user:
Enter it again:
CREATE USER
[postgres@sv pgsql]$ createdb -E unicode --owner mtzem mtzem
CREATE DATABASE
[postgres@sv pgsql]$ psql -l
List of databases
Name | Owner | Encoding
-----------+----------+----------
mt | postgres | EUC_JP
mtzem | mtzem | UNICODE
よし、
んで、もう一度移行し直し。
mt-db2sql.cgi にアクセス。
Loading database schema...
(Snip=略)
Updating sequences
Done copying data from Berkeley DB to your SQL database! All went well.
よし、これでどうだ。
・・・・だめだ。。。
で、結局、エクスポートしておいたデータを元に復旧です。。
コメント (3)
コメントのテスト。
投稿者: 匿名 | 2006年11月02日 11:39
日時: 2006年11月02日 11:39
コメントのテスト2.
投稿者: 前佛 雅人 | 2006年11月02日 11:39
日時: 2006年11月02日 11:39
やっと移行作業が終わった(T_T)
こんなので半日つぶれるなんて、やってらんないよorz...
投稿者: 前佛 雅人 | 2006年11月02日 12:27
日時: 2006年11月02日 12:27