Я только что обновился с 1.5 до 1.6.2 после примерно 10 неудачных попыток. Я многое узнал об этом процессе, так что, надеюсь, кто-то найдет это полезным.
Обновления до 1.6 будут проходить целую вечность. Кажется, существует большая разница в структуре базы данных между версиями, поэтому для выполнения команд SQL требуется около 6 или 8 часов. Главным образом команды ALTER TABLE, которые могут выполняться более часа (каждая), если таблицы полны записей. Чтобы сократить время, необходимое для этого, запустите эту команду (не забудьте изменить префикс таблицы sb_ на свой собственный)
DELETE FROM sb_sales_flat_quote WHERE updated_at < DATE_SUB(Now(),INTERVAL 7 DAY)
Он удалит все корзины покупок, кроме последней недели. Снизится до ок. 10 000 записей из более чем 250 000 в моем случае. Насколько я могу судить, это не повлияет на клиентов.
Также очистите эти таблицы (обязательно измените префикс таблицы sb_ на свой собственный):
TRUNCATE `sb_log_customer`;
ALTER TABLE `sb_log_customer` AUTO_INCREMENT=1;
TRUNCATE `sb_log_quote`;
ALTER TABLE `sb_log_quote` AUTO_INCREMENT=1;
TRUNCATE `sb_log_summary`;
ALTER TABLE `sb_log_summary` AUTO_INCREMENT=1;
TRUNCATE `sb_log_summary_type`;
ALTER TABLE `sb_log_summary_type` AUTO_INCREMENT=1;
TRUNCATE `sb_log_url`;
ALTER TABLE `sb_log_url` AUTO_INCREMENT=1;
TRUNCATE `sb_log_url_info`;
ALTER TABLE `sb_log_url_info` AUTO_INCREMENT=1;
TRUNCATE `sb_log_visitor`;
ALTER TABLE `sb_log_visitor` AUTO_INCREMENT=1;
TRUNCATE `sb_log_visitor_info`;
ALTER TABLE `sb_log_visitor_info` AUTO_INCREMENT=1;
TRUNCATE `sb_report_viewed_product_index`;
ALTER TABLE `sb_report_viewed_product_index` AUTO_INCREMENT=1;
TRUNCATE `sb_report_compared_product_index`;
ALTER TABLE `sb_report_compared_product_index` AUTO_INCREMENT=1;
TRUNCATE `sb_report_event`;
ALTER TABLE `sb_report_event` AUTO_INCREMENT=1;
TRUNCATE `sb_catalog_compare_item`;
ALTER TABLE `sb_catalog_compare_item` AUTO_INCREMENT=1;
Перед началом обновления обязательно отключите кеш! Это избавит от головной боли. Также либо удалите / отключите любые расширения, либо обновите их. Сюда входят установленные вручную, а не только те, что в Magento connect.
Если вы хотите узнать, какие команды SQL возникают при обновлении, включите отладку Magento, отредактировав /lib/Varien/Db/Adapter/Pdo/Mysql.php. Измените следующие строки на true:
protected $_debug = true;
protected $_debuglogeverything = true;
Затем вы найдете все команды в /var/debug/pdo_mysql.log (вы можете просматривать их на лету, используя SSHing на вашем сервере, перейдя в / var / debug / и набрав
tail -f *
Способ, которым я обновляюсь, - это FTP и копирование новейшей версии Magento поверх текущей установки. Это работает для меня. Я использую файловый менеджер CPanel, чтобы извлечь файл magento-1.x.x.x.tar.gz. (Кстати: TAR.GZ лучше, чем ZIP-файл, поскольку он содержит информацию о правах доступа к файлу)
Кроме того, добавьте это в свой файл .htaccess, чтобы заблокировать всех, кроме вашего собственного IP-адреса (измените IP-адрес на свой собственный). Вам также необходимо создать файл maintenance.html. Это не позволит посетителям начать процесс обновления слишком рано. Переименуйте /cron.php по той же причине.
## Exception Below is your IP
RewriteCond %{REMOTE_ADDR} !^111\.222\.333\.444
RewriteCond %{REQUEST_URI} !/maintenance\.html$
RewriteRule .* /maintenance.html [R=302,L]
После завершения обновления 1.6.2.0 я перестроил индексы. Обновление до 1.7.0.2 с этого момента заняло около 30 секунд.