やっとこさ。
今日1日は、サーバー引越し作業で潰れた…。パタっ。
昨日新しい「WEB+DB PRESS」を買ったから
のんびり読みたいところなんだけど
まずは「frei」が更新できるようにならないと
気が済まないので、せっせと作業。
本来、Movable Type を使っているなら、
インポート・エクスポート機能があるから
DBに保存されてるブログデータを
サクッと他のサーバーに移動できるはずなんだけど。
今回、そのエクスポート機能を動かしてるperlを介して
MySQLにアクセスすると、エラーが出るようになってしもた。
Got an error: Bad ObjectDriver config: Connection error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
つみきウェブさんの「MySQL徹底攻略ガイド」以下の
「Can't connect to local MySQL server through socket」エラーについてを見る限り、
なんらかの設定が、変更されたとしか思えないのだけど
勿論、何も私の方で設定の変更はしていないので
どう考えても、昨日のサーバーダウン時に
レンタルサーバー屋さんが、何かしたとしか思えない。
仕方ないので、エクスポート機能を使うのは諦めて
MySQLから、直接データをダウンロードしようと
phpMyAdmin経由で
MTに関するデータを全てダウンロードしたものの。
今度はそれを、
新サーバー上のphpMyAdminで読み込もうとすると
どっかのデータ内に妙なコードだか文字列だか含まれてる模様。
どうしても全てのデータを読み込ませる事が出来ない。
うーん。困った。
ところで、こうしてphpMyAdminでMySQLにアクセス出来るという事は、
つまりphpを介してなら、DBにアクセス出来る訳でして。
一体phpはどのソケットを経由してるんだろ?と思い
phpinfo()でチェックしてみると…
…と書いてある。
おかしいな。
perlでこけてる時の表示は
「Can't connect to local MySQL server through socket '/tmp/mysql.sock'」
なんですけど???
もうこの辺りは、正直ようわからんので(^^;
とにかく、phpを介して、
MySQLから必要なデータだけを取り出し、
データを作るしかないな。
って訳で、先日からコツコツ作っていた
phpのクラスライブラリ達が、早速役に立ちまして、
いつもの作業量の半分以下で、データ生成スクリプト完成(^-^)/
いやー、クラスって保存食みたい(笑)
余裕ある時にコツコツ作って貯めておくと
後でいざって時に役に立つんだもん。便利♪
てなこったで、作成したデータは、
新サーバー上にインストールした、Movable Typeの
mt.cgiなんかが入ってるディレクトリ内にある
「import」ディレクトリ内に置いて、
mt.cgiの管理ページ上から、インポートを実行すると
ちゃんとデータを移行する事が出来ました(^^)/
ただし、勿論テンプレートや画像は
このままじゃ移行されてなんで、
こればかりは、せっせと旧サーバーから手作業で移動させましたが…
いやはや、結構大変でした。
なにはともあれ、
krbys.netさん所を参考に
ついでにphp化したりしたし、「frei」がまた気軽に
更新出来るようになってよかったよかった。
Movable Typeの読み込みフォーマット用に
mt_entry.entry_id が $id のデータを
取得するSELECT文サンプル。
実際には試してない文もあり(^^;
STATUSは取得した値に対して、文言に変換せなアカンので
配列$statusを用意して、その中に文言を入れるとする。
DATEはフォーマットが違うので、preg_replaceで変換するとする。
AUTHOR
SELECT mt_author.author_name
FROM mt_author, mt_entry
WHERE mt_entry.entry_id = $id
AND mt_author.author_id = mt_entry.entry_author_id
TITLE
SELECT mt_entry.entry_title
FROM mt_entry.entry_id = $id
STATUS
SELECT mt_entry.entry_status
FROM mt_entry.entry_id = $id
$status = array( "", "Draft", "Publish" );
ALLOW COMMENTS
SELECT mt_entry.entry_allow_comments
FROM mt_entry.entry_id = $id
CONVERT BREAKS
SELECT mt_entry.entry_convert_breaks
FROM mt_entry.entry_id = $id
ALLOW PINGS
SELECT mt_entry.entry_allow_pings
FROM mt_entry.entry_id = $id
CATEGORY
SELECT mt_category.category_label
FROM mt_entry, mt_category, mt_placement
WHERE mt_category.category_id = mt_placement.placement_category_id
AND mt_placement.placement_entry_id = mt_entry.entry_id
AND mt_placement.placement_blog_id = mt_entry.entry_blog_id
AND mt_entry.entry_id = $id
BODY
SELECT mt_entry.entry_text
FROM mt_entry.entry_id = $id
DATE
SELECT mt_entry.entry_created_on
FROM mt_entry.entry_id = $id
変換した値 = preg_replace( "/^([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}:[0-9]{2}:[0-9]{2})$/",
"$2/$3/$1 $4", 取得した値 );
EXTENDED
SELECT mt_entry.entry_text_more
FROM mt_entry.entry_id = $id