У многих возникает задача обновить старую версию ядра на новую. Если следовать мануалу, то необходимо отключить все свои и дополнительные модули, прежде чем начать делать 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;
Надеюсь, это будет кому нибудь полезно.
Комментарии
А зачем? Пока ни разу не замечал, чтобы штатное обновление update.php не срабатывало.
Вот что написано в upgrade.txt:
5. Disable all custom and contributed modules.
Иногда бывает полезным, если глючит один из штытных модулей (не грузится сайт и все такое), а какой - непонятно, тогда отклюбчаешь их всех, чистишь кеш, можно сделать еще update.php и тогда сайт оживает.
Простите за новичковый тупой вопрос: через хостерский PhpMyAdmin эта SQL-магия тоже работает?
Простите за новичковый тупой вопрос: через хостерский PhpMyAdmin эта SQL-магия тоже работает?
да по логике должно работать, вы же для своей БД локальный админ, так что все ок.