2005年5月 7日

やっとこさ。

今日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_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

Posted by anigon at 11:59 PM

トラックバックURL:


http://anigon.net/cgi-bin/mt/mt-tb.cgi/388

「緊急引越し中。」へ戻る | 「いろいろ不具合。」へ進む

上へ戻る