MTのデータベースを PostgreSQL に移行を試みるも失敗。 :: 平成18年(2006) :: Pocketstudio'z log

« 平成18年10月28日(土) あわてないで | メイン | 富山駅北口『駅北ルミエ』点灯~ »

平成18年(2006) :: Logbook :: Pocketstudio.jp

MTのデータベースを PostgreSQL に移行を試みるも失敗。

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.

よし、これでどうだ。

・・・・だめだ。。。


で、結局、エクスポートしておいたデータを元に復旧です。。

トラックバック (SPAMチェック中)

このエントリーのトラックバックURL:
http://pocketstudio.jp/mt-cgi/mt-tb.cgi/16

コメント (3)

コメントのテスト。

コメントのテスト2.

やっと移行作業が終わった(T_T)
こんなので半日つぶれるなんて、やってらんないよorz...

コメントを投稿 (サインインは必須ではありません、誰でもコメント出来ます/SPAMチェック中)

About

2006年11月02日 11:28に投稿されたエントリーのページです。

ひとつ前の投稿は「平成18年10月28日(土) あわてないで」です。

次の投稿は「富山駅北口『駅北ルミエ』点灯~」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。