1. トップページ
  2. MySQL 5.7.39 で特定のデータベース内に格納されたURLをすべて置き換える

MySQL 5.7.39 で特定のデータベース内に格納されたURLをすべて置き換える

レンタルサーバーにインストールされた WordPress を
ローカル環境にもインストールする場合、
データベース内のドメインをローカル環境用のドメインに書き換える必要があります。

別環境に引っ越しする場合は Search Replace DB などブラウザで動作するプログラムを使用して書き換えますが、
今回はSQL文のみで書き換えを行ってみます。
また、テーブルやカラム単位ではなく、1つのデータベース内のドメインをまるごと書き換えます。

実行前に必ずデータベースのバックアップを取得してから実行してください。

動作環境

以下の環境で動作を確認しました。

- MySQL 5.7.39


操作手順

1. 書き換え用のUPDATE文を一括で出力する

以下のSQL文を実行してください。
SQL文内の「データベース名」「古いURL」「新しいURL」は適時書き換えをお願いいたします。

USE データベース名;

SET @old_url = '古いURL';
SET @new_url = '新しいURL';

SELECT CONCAT('UPDATE `', TABLE_NAME, '` SET `', COLUMN_NAME, '` = REPLACE(`', COLUMN_NAME, '`, \'', @old_url, '\', \'', @new_url, '\');') AS sql_statements
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND DATA_TYPE IN ('CHAR', 'VARCHAR', 'TEXT', 'TINYTEXT', 'MEDIUMTEXT', 'LONGTEXT');


2. UPDATE文を実行する

実行後は以下のような形式のSQL文が大量に出力されますので、それら全てを実行してください。
「カラム名」「古いURL」「新しいURL」はデータベースの内容に応じて自動的に書き換わります。

UPDATE `wp_admin_columns` SET `list_id` = REPLACE(`カラム名`, '古いURL', '新しいURL');


これで作業は終了です。
データベースを開いて書き換わっているか確認してください。

参考にさせていただいたページ

参考サイトなし