Отключение модулей во время обновления БД

Главные вкладки

Аватар пользователя Siegfrid@drupal.org Siegfrid@drupal.org 13 марта 2010 в 16:26

У многих возникает задача обновить старую версию ядра на новую. Если следовать мануалу, то необходимо отключить все свои и дополнительные модули, прежде чем начать делать update. Выполнять это ручками не кашерно, да и не все так хорошо знают SQL, поэтому, тем, кто не в ладах с базами данных может немного облегчить эту задачу этот мануал:

Прежде чем начинать делать update не забудьте сделать бекап!

1. коннектимся к вашей БД:
mysql -u <имя пользователя БД> -p<пароль> <название БД>

1. Создаем временную таблицу backup_system
CREATE TABLE `backup_system` (
`filename` varchar(255) NOT NULL DEFAULT '',
`name` varchar(255) NOT NULL DEFAULT '',
`type` varchar(255) NOT NULL DEFAULT '',
`status` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`filename`),
KEY `modules` (`type`(12),`status`,`filename`),
KEY `type_name` (`type`(12),`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

2. Копирование данных по активным модулям
INSERT INTO backup_system (filename, name, type, status)
SELECT s.filename, s.name, s.type, s.status
FROM system s where s.`filename` Like 'sites/%' AND status = 1 and s.type = 'module';

3. Отключаем все модули
UPDATE system s SET s.status = 0 where s.`filename` Like 'sites/%' AND s.status = 1 and s.type = 'module';
(если надо отключить еще и темы, то просто надо убрать and s.type = 'module')

4. Далее обновляем ядро, выполняем скрипт http://yoursite.com/update.php
Если все ок, то продолжаем дальше

5. Включаем обратно все модули
UPDATE system s, backup_system bs SET s.status = 1
WHERE (s.filename = bs.filename AND s.name = bs.name) AND bs.status = 1;

5. Убиваем временную таблицу.
DROP TABLE backup_system;

Надеюсь, это будет кому нибудь полезно.

Комментарии

Аватар пользователя Siegfrid@drupal.org Siegfrid@drupal.org 14 марта 2010 в 0:33

Вот что написано в upgrade.txt:
5. Disable all custom and contributed modules.

Иногда бывает полезным, если глючит один из штытных модулей (не грузится сайт и все такое), а какой - непонятно, тогда отклюбчаешь их всех, чистишь кеш, можно сделать еще update.php и тогда сайт оживает.