sb-users.jp の my little forum を直す

sb-users.jp で利用している my little forum はバージョン 1.7 ですが、最新版の 2.0 が出ていたのでサーバ移転ついでにアップデートすることに。
アップデート手順については別記事にまとめました。
my little forum 1.7 から 2.0 へのアップデート – p15.jp

正常に稼働している状態なら手順通りにアップデートできたはずなんですけど、片方はデータベースがぶっ壊れているみたいなのでそうもいかず。
sbUsersGroup からいただいた当時のバックアップファイルを元に 1.7 を新たにインストールして、アップデート手順に従って 2.0 にするという方法を取ることにしました。

1.7 と 2.0 をそれぞれインストール

エックサーバに 1.7 を 2 つ、コアサーバに 2.0 を 3 つインストール。
普通のフォーラムとカスタマイズフォーラム、2.0 が一つ多いのはインポートのテスト用です。
1.7 は日本語言語ファイルが同梱されているのでインストールから日本語で快適・・・のはずがインストール画面が文字化けしてしまいます。なんでだろ。
2.0 には日本語言語ファイルがないので中途半端にオレオレ翻訳した japanese.lang を適用しました。

ちなみに 2.0 をインストールするには MySQL 4.1 以上が必要なので、データベースバージョンアップ以前のエックスサーバではそもそもインストールできません。

以前のバックアップファイルを加工

1.7 の管理エリアメニューの DBのバックアップまたは復旧 から SQL ダンプのインポート を行うのですが、バックアップファイルをそのままコピペして読み込んでもエラーが出るばかり。
どんな形式が正解なのかよくわからないしインポートにやたら時間がかかるので、現在正常に稼働している方のフォーラムのデータベーステーブルをエクスポートしてみて、同じ形式に変換してから phpMyAdmin でインポートすることにしました。

エクスポートのオプションは SQL で DROP TABLE を追加、完全な INSERT 文を作成する にチェック (長い INSERT 文を作成する のチェックをはずす)、INSERT で。

エクスポート時にエンコードの指定を non にすると サーバのバージョン や テーブルの構造 などは正常に表示されるけど INSERT INTO 以降が文字化け、my little forum 1.7 は EUC-JP なのでエンコードの指定を EUC にするとさっきと逆の状態になります。
頭の中が???でいっぱいになりつつも、INSERT INTO 以降が正常に表示されている方のエクスポートファイルを見てみると、

INSERT INTO `forum_entries` (`id`, `pid`, `tid`, `uniqid`, `time`, `last_answer`, `edited`, `edited_by`, `user_id`, `name`, `subject`, `category`, `email`, `hp`, `place`, `ip`, `text`, `show_signature`, `email_notify`, `marked`, `locked`, `fixed`, `views`) VALUES (1, 0, 1, 〜中略〜 0, 1, 1, 0, 0),
〜さらに中略〜
INSERT INTO `forum_entries` (`id`, `pid`, `tid`, `uniqid`, `time`, `last_answer`, `edited`, `edited_by`, `user_id`, `name`, `subject`, `category`, `email`, `hp`, `place`, `ip`, `text`, `show_signature`, `email_notify`, `marked`, `locked`, `fixed`, `views`) VALUES (1376, 1375, 1370, 〜中略〜 0, 1, 1, 0, 0);

となっていたので、元データをこういう形式に変換。
さらにファイルの大半を占めるスパムのデータを目視で確認しつつ削除と、スパムのおかげで最新返信年月日がおかしなことになっているのもちまちま修正。
フォーラム二種類とパティオ過去ログへの URL を sb-users.jp のものに修正。
ユーザ登録していた人の名前からユーザ情報ページへリンクしないように修正。

サーバのバージョン や テーブルの構造 などの部分が文字化けしたままだとよくなさそうだったので正しい内容に修正。

変換したデータをインポート

テーブルを選択してインポート、文字コードの変換は EUC にチェックを入れました。
SET SQL_MODE=”NO_AUTO_VALUE_ON_ZERO”; がエラーが表示されましたが、その一行まるごと削除でおっけー。

インポートしたテーブルは forum_entries と forum_categories のみ。
その他のテーブルは新たに設定した方がよさげなのでインポートしなかった。
sb-users.jp ではログの閲覧目的にしか使っていないので投稿だけ復元できればいいや的なところがあるけど、実際に運用中であればもうちょっと慎重に。forum_userdata とか必要だと思う。

この調子で 2 つのフォーラムを 1.7 で復元しました。
今回作ったインポートファイルはちゃんとしまっておかないと(`・ω・´)

2.0 をインストールしてデータをインポート

アップデート手順に従ってバックアップファイルを作成。
新しくインストールした 2.0 にインポートすると・・・盛大に文字化け><
backup.php で出力した sql ファイルを開いてみたら日本語が文字化けしていました。エンコーディングを変更しても反応なし。

my little forum – Update from version 1.7* to 2.0
日本語だとバックアップスクリプトを利用したときに文字化けしてしまうのが現状なのかもしれません(´・ω・`)

このままでは 2.0 が使えないので文字化けを解消すべく (nic せんせーに) 立ち上がっ (ってもらっ) た!!
詳細は別記事にまとめました。
my little forum 2.0 アップデート時の日本語文字化けを解消 – p15.jp

文字化け解消後は phpMyAdmin からでも 2.0 のバックアップ機能からでも正常にインポートできました。
いやーよかったよかったヽ(・ω・)ノ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です