今日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()でチェックしてみると…
MYSQL_SOCKET /tmp/mysql.sock
…と書いてある。
おかしいな。
perlでこけてる時の表示は
「Can't connect to local MySQL server through socket '/tmp/mysql.sock'」
なんですけど???
同じソケットでperlはNG、phpはOKなんですか???
もうこの辺りは、正直ようわからんので(^^;
とにかく、phpを介して、
MySQLから必要なデータだけを取り出し、
Movable Typeの読み込みフォーマットにあわせて
データを作るしかないな。
って訳で、先日からコツコツ作っていた
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_idTITLE
SELECT mt_entry.entry_title
FROM mt_entry.entry_id = $idSTATUS
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 = $idCONVERT BREAKS
SELECT mt_entry.entry_convert_breaks
FROM mt_entry.entry_id = $idALLOW PINGS
SELECT mt_entry.entry_allow_pings
FROM mt_entry.entry_id = $idCATEGORY
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 = $idBODY
SELECT mt_entry.entry_text
FROM mt_entry.entry_id = $idDATE
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
やっとこさ。