JETBOYへの手動の引っ越し|wp-config.phpとテーブル接頭辞の点検

JETBOYのマニュアルには、WordPressを手動で移す手順が8つの段階で書かれています。ファイルをFTPで移し、データベースをphpMyAdminで書き出して取り込み、wp-config.php を新しいデータベースの情報に書き換える流れです。ここで間違えやすいのが、$table_prefix(テーブル名の接頭辞)です。データベースは移行元のテーブルをそのまま取り込むため、接頭辞は取り込んだテーブルの名前と同じにしておく必要があります。この記事では、マニュアルの手順を整理し、wp-config.php と書き出したSQLが合っているかを点検するPythonを、WordPress公式のサンプルファイルで動かします。

(確認:JETBOY サポートサイト「WordPressお引越し(手動でのデータ移動)」、WordPress公式のリポジトリの wp-config-sample.php。確認日:2026年10月30日。筆者はJETBOYへ実際に移して確かめてはいません。SQLは説明用に作った短い例です)

マニュアルの手順

  1. JETBOYのcPanelで、移行元と同じドメインの「アドオンドメイン」を作る
  2. 「MySQLデータベースウィザード」で、データベースとユーザーを作る(名前とパスワードは任意)
  3. 移行元のWordPressのファイル(ドキュメントルート配下のすべて)を、FTPで手元のPCに保存する
  4. 移行元のphpMyAdminで、データベースを書き出す(方法は「詳細」、テーブルは全選択、zip形式、SQL形式。「DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT コマンドを追加する」にチェック)。下の点検のコードに渡す時は、zip を展開した .sql のファイルを使う
  5. JETBOYのphpMyAdminで、新しいデータベースを指定して取り込む
  6. ファイルを、FTPでJETBOYのドキュメントルート直下へ上げる
  7. ファイルマネージャーで wp-config.php を開き、DB_NAME・DB_USER・DB_PASSWORD と $table_prefix を書き換える
  8. ドメインのネームサーバーを ns1.jetboy.jp・ns2.jetboy.jp に変える

マニュアルの手順7では、$table_prefix を「新しいWordPressのテーブルプレフィックス」に書き換えるとあります。手順5で取り込んだテーブルは移行元の名前のままなので、ここは移行元の wp-config.php に書かれていた値と同じにするのが正しい、と筆者は読みます(WordPressは、この接頭辞を付けた名前のテーブルを読むため)。

コード:設定とSQLが合っているかを点検する

# WordPressを手動で移す時に、wp-config.php の設定と、取り込む SQL(phpMyAdmin の書き出し)が合っているかを点検する(読み取りのみ)
# 1) wp-config.php の DB_NAME・DB_USER・DB_PASSWORD・DB_HOST と $table_prefix を読む
# 2) SQL の CREATE TABLE からテーブル名を集め、$table_prefix で始まるか、options・posts・users があるかを見る
# 3) DROP TABLE が入っているか(入っていないと、同じ名前のテーブルがある所へ取り込んだ時に失敗する)
# 使い方: python check_move.py wp-config.php export.sql [prefix を変えて試す時の値](.sql.zip は展開してから渡す)
import re
import sys

cfg = open(sys.argv[1], encoding='utf-8').read()
sql = open(sys.argv[2], encoding='utf-8').read()
consts = dict(re.findall(r"define\(\s*'(DB_NAME|DB_USER|DB_PASSWORD|DB_HOST)'\s*,\s*'([^']*)'\s*\)", cfg))
m = re.search(r"\$table_prefix\s*=\s*'([^']*)'", cfg)
prefix = sys.argv[3] if len(sys.argv) > 3 else (m.group(1) if m else '')

print('wp-config.php')
for k in ('DB_NAME', 'DB_USER', 'DB_PASSWORD', 'DB_HOST'):
    v = consts.get(k, '(なし)')
    placeholder = v.endswith('_here')
    shown = '****' if k == 'DB_PASSWORD' and not placeholder else v
    print(f'  {k:<12}{shown:<22}{"← 書き換えが必要(サンプルのまま)" if placeholder else ""}')
print(f'  $table_prefix {prefix}')

tables = re.findall(r'CREATE TABLE (?:IF NOT EXISTS )?`([^`]+)`', sql)   # 書き出しの設定で IF NOT EXISTS が付く場合も読む
pre = sorted({t[:t.index('_') + 1] for t in tables if '_' in t})
print(f'\nSQL のテーブル: {len(tables)}個  接頭辞: {", ".join(pre)}')
ok = all(t.startswith(prefix) for t in tables) and tables
print(f'  $table_prefix「{prefix}」と一致: {"はい" if ok else "いいえ ← WordPressがテーブルを見つけられない"}')
for core in ('options', 'posts', 'users'):
    print(f'  {prefix}{core}: {"あり" if prefix + core in tables else "なし"}')
print(f'  DROP TABLE の行: {"あり" if re.search(r"DROP TABLE", sql) else "なし ← 書き出しのオプションを確かめる"}')

例として使ったSQL(接頭辞が abc_ のテーブルを書き出した場合を想定した短い例):

-- 例:phpMyAdmin の「エクスポート」で作られる SQL の一部(説明用に短くしたもの。実際のデータではない)
DROP TABLE IF EXISTS `abc_options`;
CREATE TABLE `abc_options` (
  `option_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `option_name` varchar(191) NOT NULL DEFAULT '',
  `option_value` longtext NOT NULL,
  PRIMARY KEY (`option_id`)
);
INSERT INTO `abc_options` VALUES (1,'siteurl','https://example.com'),(2,'home','https://example.com');
DROP TABLE IF EXISTS `abc_posts`;
CREATE TABLE `abc_posts` (
  `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`ID`)
);
DROP TABLE IF EXISTS `abc_users`;
CREATE TABLE `abc_users` (
  `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`ID`)
);

実行の結果(Python 3)

$ python check_move.py wp-config-sample.php example_export.sql
wp-config.php
  DB_NAME     database_name_here    ← 書き換えが必要(サンプルのまま)
  DB_USER     username_here         ← 書き換えが必要(サンプルのまま)
  DB_PASSWORD password_here         ← 書き換えが必要(サンプルのまま)
  DB_HOST     localhost             
  $table_prefix wp_

SQL のテーブル: 3個  接頭辞: abc_
  $table_prefix「wp_」と一致: いいえ ← WordPressがテーブルを見つけられない
  wp_options: なし
  wp_posts: なし
  wp_users: なし
  DROP TABLE の行: あり

$ python check_move.py wp-config-sample.php example_export.sql abc_
wp-config.php
  DB_NAME     database_name_here    ← 書き換えが必要(サンプルのまま)
  DB_USER     username_here         ← 書き換えが必要(サンプルのまま)
  DB_PASSWORD password_here         ← 書き換えが必要(サンプルのまま)
  DB_HOST     localhost             
  $table_prefix abc_

SQL のテーブル: 3個  接頭辞: abc_
  $table_prefix「abc_」と一致: はい
  abc_options: あり
  abc_posts: あり
  abc_users: あり
  DROP TABLE の行: あり
  • WordPress公式のサンプルのままだと、DB_NAME・DB_USER・DB_PASSWORD がサンプルの値で、接頭辞は wp_
  • 取り込むテーブルの接頭辞が abc_ なのに wp_ のままだと、WordPressは必要なテーブルを見つけられない。WordPressを新しく入れる画面が出るなどの症状になる(筆者の理解)
  • 接頭辞を abc_ に合わせると、options・posts・users のテーブルがそろう

ほかに気をつけること(筆者の考え)

  • DB_HOST:マニュアルの手順では書き換えの対象に入っていない。JETBOYのデータベースのホスト名は、cPanelの表示やマニュアル「WordPressデータベース情報の確認方法」で確かめる
  • パスワードを貼る時:wp-config.php を人に見せる時やスクリプトの結果を共有する時は、パスワードを伏せる(上のコードは伏せて表示する)
  • ネームサーバーを変える前に表示を確かめる:移転先のWordPressを公開前に見る方法。wp-config.php の設定の意味はwp-config.phpの主な設定にあります
  • 手間をかけたくない時:JETBOYには、初回3サイトまで引っ越しを無料で代行するサービスがある(JETBOYの設定代行)

この記事で確かめていないこと

  • JETBOYのデータベースのホスト名(localhost で動くか)
  • 大きなデータベースを phpMyAdmin で取り込む時の上限
  • 移行元のサーバーの種類による、書き出しの画面の違い

まとめ

  • JETBOYへの手動の引っ越しは、アドオンドメイン・データベースの作成 → ファイルとデータベースの移動 → wp-config.php の書き換え → ネームサーバーの変更、の順
  • $table_prefix は、取り込んだテーブルの接頭辞(移行元と同じ値)に合わせる。違うとWordPressがテーブルを見つけられない
  • 書き出しでは DROP TABLE を追加する設定にする。設定とSQLが合っているかは、上のコードで点検できる

本記事はJETBOYの公式マニュアルと、WordPress公式のサンプルファイルにもとづく整理です。プランと料金はJETBOYのプランと料金にまとめています。