Изменение расположения доменов зарегистрированных в системе
Актуально для версии 18.
Задача
- Поменять местами домены в системе, n-ый домен сделать основным (1-ым), а на его место поставить основной домен.
- Удалить основной домен, а на его место переместить домен который находится на второй позиции, либо какой-то другой.
Решение
Перед выполнением этой операции, необходимо написать в Службу Заботы с просьбой сбросить привязку ключа к домену. Лицензионный ключ от системы должен быть отвязан от текущего основного домена. Также, обязательно необходимо сделать бэкап базы данных, т.к. операции достаточно опасные, возможна потеря данных, в случае ошибки, поэтому у вас должна быть возможность восстановить базу данных из бэкапа. Сами действия следующие, сначала заходим в базу данных через известную утилиту phpMyAdmin или Adminer. В нужной базе данных, заходим в таблицу cms3_hierarchy, вкладка "Структура", внизу выбираем "Связи". Проверяем что для столбца domain_id проставлен ключ FOREIGN KEY (INNODB) со следующими параметрами:
cms3_domains.id ON UPDATE CASCADE
если связь не установлена, то прописываем ее следующим SQL запросом:
ALTER TABLE `cms3_hierarchy` ADD CONSTRAINT `FK_Domain from domain_id relation` FOREIGN KEY (`domain_id`) REFERENCES `cms3_domains` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
Далее, заходим в таблицу cms3_templates, и также во вкладку "Структура", ссылка "Связи", для столбца domain_id прописываем FOREIGN KEY, с таблицей cms3_domains столбцом id, а параметр ON UPDATE = CASCADE. Для этого можно выполнить следующий SQL запрос:
ALTER TABLE `cms3_templates` ADD CONSTRAINT `Templates - domains_FK` FOREIGN KEY (`domain_id`) REFERENCES `cms3_domains`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
Далее заходим в таблицу cms3_domains, во вкладку "Обзор", и для основного домена (is_default = 1) меняем id на какой либо другой, свободный, и is_default ставим = 0. А для того домена, который надо сделать основным, ставим id=1 и is_default = 1. В таблице cms3_templates был прописан FOREIGN KEY для того, чтобы когда в таблице cms3_domains меняется id домена, он автоматически поменялся и в таблице cms3_templates, в столбце domain_id. Зайдя через браузер на новый основной домен, вы скорее всего увидите ошибку лицензионного ключа, в это окно необходимо ввести лицензионный ключ от вашей системы.
Если при изменении id в таблице cms3_domains появляется ошибка:
Cannot delete or update a parent row: a foreign key constraint fails (`cms_sitemap`, CONSTRAINT `domain_id from cms3_domains` FOREIGN KEY (`domain_id`) REFERENCES `cms3_domains` (`id`) ON DELETE CASCADE)
то необходимо очистить таблицу cms_sitemap. Это можно сделать при помощи SQL запроса:
TRUNCATE TABLE `cms_sitemap`
Внимание! Если необходимо удалить какой-либо домен, не выполняйте его удаление через базу данных, иначе в базе останется много мусора. Необходимо сначала в административной части удалить все страницы от домена, а потом уже сам домен.