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

Материал из Umicms
Перейти к:навигация, поиск
 
Строка 1: Строка 1:
В некоторых случаях может возникнуть ситуация, когда необходимо удалить основной домен, а на его место переместить домен который находится на второй позиции, либо какой-то другой. Возможно также смена местами доменов, n-ый домен делается основным (1-ым), а на его место ставится основной домен. Перед выполнением этой операции, по запросу в [http://www.umi-cms.ru/support/ Службу Заботы], ваш лицензионный ключ от системы уже должен быть отвязан от текущего основного домена. Также, <u>'''обязательно необходимо сделать бэкап базы данных'''</u>, т.к. операции достаточно опасные, возможна потеря данных, в случае ошибки, поэтому у вас должна быть возможность восстановить базу данных из бэкапа.
+
'''Актуально для версии 18.'''
Сами действия следующие, сначала заходим в базу данных через известную утилиту phpmyadmin. В нужной базе данных, заходим в таблицу '''cms3_hierarchy''', вкладка "'''Структура'''", внизу выбираем "'''Связи'''". Проверяем что для столбца '''domain_id''' проставлен ключ '''FOREIGN KEY''' (INNODB) со следующими параметрами:
+
== Задача ==
<pre>
 
cms3_domains.id
 
ON UPDATE CASCADE
 
</pre>
 
если связь не установлена, то прописываем ее.
 
Далее, заходим в таблицу '''cms3_templates''', и также во вкладку "Структура", ссылка "Связи", для столбца '''domain_id''' прописываем FOREIGN KEY, сама родительская таблица и столбец следующие:
 
<pre>
 
cms3_domains.id
 
</pre>
 
а параметр '''ON UPDATE''' = '''CASCADE'''.
 
  
 +
*Поменять местами домены в системе, n-ый домен сделать основным (1-ым), а на его место поставить основной домен.
  
Далее заходим в таблицу '''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. Зайдя через браузер на новый основной домен, вы скорее всего увидите ошибку лицензионного ключа, в это окно необходимо ввести лицензионный ключ от вашей системы.
+
*Удалить основной домен, а на его место переместить домен который находится на второй позиции, либо какой-то другой.
  
Если необходимо удалить какой-либо домен, не выполняйте его удаление через базу данных, иначе в базе останется много мусора. Необходимо сначала в административной части удалить все страницы от домена, а потом уже сам домен.
+
== Решение ==
 +
Перед выполнением этой операции, необходимо написать в [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`

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