WordPress: соединение БД MySQL нескольких сайтов

Сегодня столкнулся с ситуацией когда мне понадобилось объединить базы данных MySQL двух блоков. Проблема была в том, что они имели одинаковый префикс — wp_

Изначально вопрос показался проблематичным, так как базы данных весили каждая около 100 МБ и в текстовом редакторе произвести изменение префиксов было сложно. В итоге удалось переименовать префиксы одной БД в phpMyAdmin.

1. Убедитесь что у вас есть бэкапы БД
2. В notepad++ напишите SQL-запрос такого вида:

CREATE TABLE wp0_commentmeta SELECT * FROM wp_commentmeta;
CREATE TABLE wp0_comments SELECT * FROM wp_comments;
CREATE TABLE wp0_links SELECT * FROM wp_links;
CREATE TABLE wp0_ngg_album SELECT * FROM wp_ngg_album;
CREATE TABLE wp0_ngg_gallery SELECT * FROM wp_ngg_gallery;
CREATE TABLE wp0_ngg_pictures SELECT * FROM wp_ngg_pictures;
CREATE TABLE wp0_options SELECT * FROM wp_options;
CREATE TABLE wp0_postmeta SELECT * FROM wp_postmeta;
CREATE TABLE wp0_posts SELECT * FROM wp_posts;
CREATE TABLE wp0_terms SELECT * FROM wp_terms;
CREATE TABLE wp0_term_relationships SELECT * FROM wp_term_relationships;
CREATE TABLE wp0_term_taxonomy SELECT * FROM wp_term_taxonomy;
CREATE TABLE wp0_usermeta SELECT * FROM wp_usermeta;
CREATE TABLE wp0_users SELECT * FROM wp_users;

И по пунктам:
— CREATE TABLE — создает новую таблицу
— wp0_ — новый префикс
— SELECT * FROM — скопировать содержимое из таблицы со старым префиксом

Будьте внимательны. Таблицы могут быть и другие, лучше сверяться с БД.

3. Теперь путь лежит в phpMyAdmin —> SQL. Копируем заброс из блокното и вставляем в облась SQL-запросов.

4. После успешного завершения создания таблиц заходим на ФТП блога и указываем новый префикс в файле wp-config.php

$table_prefix = 'wp0__';

И сохранить его конечно.

5.

UPDATE wp0_options SET option_name = 'wp0_user_roles' WHERE option_name = 'wp_user_roles';
UPDATE wp0_usermeta SET meta_key = 'wp0_user_level' WHERE meta_key = 'wp_user_level';
UPDATE wp0_usermeta SET meta_key = 'wp0_user-settings-time' WHERE meta_key = 'wp_user-settings-time';
UPDATE wp0_usermeta SET meta_key = 'wp0_user-settings' WHERE meta_key = 'wp_user-settings';
UPDATE wp0_usermeta SET meta_key = 'wp0_capabilities' WHERE meta_key = 'wp_capabilities';
UPDATE wp0_usermeta SET meta_key = 'wp0_dashboard_quick_press_last_post_id' WHERE meta_key = 'wp_dashboard_quick_press_last_post_id';
UPDATE wp0_usermeta SET meta_key = 'wp0_autosave_draft_ids' WHERE meta_key = 'wp_autosave_draft_ids';
UPDATE wp0_usermeta SET meta_key = 'wp0_metaboxorder_post' WHERE meta_key = 'wp_metaboxorder_post';
UPDATE wp0_usermeta SET meta_key = 'wp0_usersettings' WHERE meta_key = 'wp_usersettings';
UPDATE wp0_usermeta SET meta_key = 'wp0_usersettingstime' WHERE meta_key = 'wp_usersettingstime';

6. Заходим на сайт и если он работает без ошибок, то возвращайтесь в phpMyAdmin и удаляйте все таблицы со старым префиксом из БД MySQL.

7. Делайте экспорт второй базы данных.

Change Database Prefix

Добавить комментарий