phpBB++ 管理者ガイド - 他の phpBB からの移行
新規インストールであれば問題ありませんが、他の phpBB から phpBB++ へと移行する場合には注意すべきことがあります。ある意味ほぼ自明なのですが、自信があっても一応以下の注意を読んでから移行作業を行ってください。
- 文字エンコーディング
phpBB++ 標準では UTF-8 を使うので、Shift_JIS や EUC-JP などを採用している他の phpBB から移行する場合には既存データを変換しないと文字化けします。mysqldump (または phpMyAdmin のエクスポート機能)で出力した SQL 文の文字エンコーディングを変換してから mysql コマンドでリストアすれば OK です(phpBB 管理画面のバックアップ機能は非推奨)。
なお、フィールド長を修正していなかったために既にデータが文字化けしている(多バイト文字の途中で切れている)場合などには上手くいかないことがあります。そのような場合は先に問題のデータを修正するか、フィールド毎に文字コードを変換していくスクリプトを書くとか、適当に対処してください。
- データベーススキーマ
見逃しがちなのがデータベーススキーマの変更です。「インストール」で書いたとおり、MySQL 4.0 以前では char/varchar フィールド長の単位が byte です。MySQL 4.0 以前を使う場合、既存データが UTF-8 かつ既に修正済みでない限り、フィールド長の修正が必要です。
install/schemas/mysql_schema.sql ファイルなどを参考に、mysqldump 出力の CREAT TABLE 文を書き換えてください。
また、スパム対策機能のために phpbb_disallow テーブルには次のフィールドを追加定義しています。CREAT TABLE 文に追加するか、リストア後に phpMyAdmin などで追加してください。無論こちらは MySQL 4.1 以降でも必要です。
disallow_subject varchar(255) default NULL,
disallow_message text default NULL,
- 追加フィールド
更に見逃しやすいのが環境設定の追加フィールドです。「インストール」で書いたとおり、phpbb_config テーブルに独自機能の設定を追加しています。mysqldump 出力に次のような INSERT 文を追加するか、phpMyAdmin などで追加してください。
INSERT INTO phpbb_config (config_name, config_value) VALUES ('trashbox_forum_id', '');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('max_links_per_post', '30');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('max_links_per_post_by_anonymous', '20');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('favicon_path', '');
- mysqldump/mysql コマンド
最後に一応 mysqldump/mysql コマンドの使用例を書いておきます。
mysqldump -u USERNAME -p --add-drop-table --skip-extended-insert --default-character-set=binary DBNAME > phpbb-backup.sql
これで DBNAME データベース中の全データが SQL の INSERT 文としてバックアップされます。-add-drop-table, --extended-insert, --default-character-set の指定については必要に応じて適当に。
SQL ファイルが得られたら、必要に応じて上記の通り文字エンコーディングの変換、テーブル接頭辞やテーブルスキーマ定義の変更、不足フィールドの追加をしてから、次のように mysql に読み込ませます。
mysql -u USERNAME -p DBNAME < phpbb-backup.sql
以上、分かっていれば簡単だが分かっていないと色々はまる、移行作業の注意事項でした。