シリアライ置換問題.txt

WPサイトを移動する時、データベースも移行する必要があるが、ほとんどの場合ホスト名が変わってしまうので、SQLファイル中のホスト名も変更しなければならない。

ただ、単にテキストエディタで一括置換すると一つ問題が発生する。

それは、phpのserialize()関数で作成されたデータがある場合、置換前と置換後で文字列長が変わってしまって、unserialize()出来ない事がある。

これを回避するには、sqlファイル中からシリアライズデータを抽出して再生成してやる必要がある。

と言うことで、テキストエディタではなく、置換用のphpスクリプトを自作してみた。それが以下である。

シリアライズ対象は数値配列とオブジェクトで、本当は数値や文字列もあるのだが、これらをシリアライズする必要性はそもそもほとんどゼロなので考慮していない。

これで正しく新サイトDBにインポート出来るようになる。