Изменение расположения доменов зарегистрированных в системе — различия между версиями
Mad grant (обсуждение | вклад) |
Vitaliks (обсуждение | вклад) |
||
(не показаны 2 промежуточные версии 1 участника) | |||
Строка 1: | Строка 1: | ||
− | + | '''Актуально для версии 18.''' | |
− | + | == Задача == | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | *Поменять местами домены в системе, n-ый домен сделать основным (1-ым), а на его место поставить основной домен. | ||
− | + | *Удалить основной домен, а на его место переместить домен который находится на второй позиции, либо какой-то другой. | |
− | Если необходимо удалить какой-либо домен, не выполняйте его удаление через базу данных, иначе в базе останется много мусора. Необходимо сначала в административной части удалить все страницы от домена, а потом уже сам домен. | + | == Решение == |
+ | Перед выполнением этой операции, необходимо написать в [http://www.umi-cms.ru/support/ Службу Заботы] с просьбой сбросить привязку ключа к домену. Лицензионный ключ от системы должен быть отвязан от текущего основного домена. Также, <u>'''обязательно необходимо сделать бэкап базы данных'''</u>, т.к. операции достаточно опасные, возможна потеря данных, в случае ошибки, поэтому у вас должна быть возможность восстановить базу данных из бэкапа. | ||
+ | Сами действия следующие, сначала заходим в базу данных через известную утилиту phpMyAdmin или Adminer. В нужной базе данных, заходим в таблицу '''cms3_hierarchy''', вкладка "'''Структура'''", внизу выбираем "'''Связи'''". Проверяем что для столбца '''domain_id''' проставлен ключ '''FOREIGN KEY''' (INNODB) со следующими параметрами: | ||
+ | cms3_domains.id ON UPDATE CASCADE | ||
+ | если связь не установлена, то прописываем ее следующим SQL запросом: | ||
+ | <source lang="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; | ||
+ | </source> | ||
+ | Далее, заходим в таблицу '''cms3_templates''', и также во вкладку "Структура", ссылка "Связи", для столбца '''domain_id''' прописываем FOREIGN KEY, с таблицей cms3_domains столбцом id, а параметр '''ON UPDATE''' = '''CASCADE'''. | ||
+ | Для этого можно выполнить следующий SQL запрос: | ||
+ | <source lang="sql"> | ||
+ | ALTER TABLE `cms3_templates` ADD CONSTRAINT `Templates - domains_FK` FOREIGN KEY (`domain_id`) REFERENCES `cms3_domains`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; | ||
+ | </source> | ||
+ | Далее заходим в таблицу '''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 запроса: | ||
+ | <source lang="sql"> | ||
+ | TRUNCATE TABLE `cms_sitemap` | ||
+ | </source> | ||
+ | |||
+ | '''Внимание!''' Если необходимо удалить какой-либо домен, не выполняйте его удаление через базу данных, иначе в базе останется много мусора. Необходимо сначала в административной части удалить все страницы от домена, а потом уже сам домен. | ||
[[Категория: Вопросы установки настройки и переноса]] | [[Категория: Вопросы установки настройки и переноса]] |
Текущая версия на 09:22, 9 августа 2018
Актуально для версии 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`
Внимание! Если необходимо удалить какой-либо домен, не выполняйте его удаление через базу данных, иначе в базе останется много мусора. Необходимо сначала в административной части удалить все страницы от домена, а потом уже сам домен.