frei

旧「anney's room」からブログ「frei」だけ引っ越し&残しました

やっとこさ。

今日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で読み込もうとすると

どっかのデータ内に妙なコードだか文字列だか含まれてる模様。

どうしても全てのデータを読み込ませる事が出来ない。

うーん。困った。

ところで、こうしてphpMyAdminMySQLにアクセス出来るという事は、

つまり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