Изменение расположения доменов зарегистрированных в системе

Материал из Umicms
Версия от 09:22, 9 августа 2018; Vitaliks (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к:навигация, поиск

Актуально для версии 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`

Внимание! Если необходимо удалить какой-либо домен, не выполняйте его удаление через базу данных, иначе в базе останется много мусора. Необходимо сначала в административной части удалить все страницы от домена, а потом уже сам домен.