Как обновить Magento, когда структура базы данных меняется между версиями? - PullRequest
5 голосов
/ 16 февраля 2011

Все методы обновления, которые я видел (не уверен насчет метода magento connect), не затрагивают базу данных только файлы и каталоги &).Я нахожусь на моей первой сборке Magento, но я вижу, что они изменили структуру каталогов с прошлыми обновлениями.Итак, мой вопрос: как мне обновить Magento, чтобы обеспечить обновление базы данных?

Ответы [ 3 ]

3 голосов
/ 17 февраля 2011

Согласно ответу @ Anton, обновления базы данных применяются PHP-кодом в самих модулях Magento.

Если вы заглянете в любой из модулей кода (например, DOCROOT\app\code\core\Mage\Catalog\), вы увидите папку с именем sql\modulename_setup, которая содержит множество файлов, которые выполняют обновления базы данных, соответствующие их версии модуля.

Обратите внимание, что версия модуля (указанная в etc/config.xml для этого модуля) не всегда будет соответствовать полной версии Magento, хотя для некоторых основных модулей, таких как Mage_Catalog, они довольно близки.

Когда вы загружаете новый код в файловую систему вашего веб-сервера, при следующей загрузке любой страницы Magento система проверит номер текущей версии базы данных, используя таблицу core_resource в mysql.Если он меньше версии, указанной в config.xml этого модуля, то Magento будет последовательно применять файлы в папке sql\modulename_setup, чтобы data_version соответствовал version.

модуля.Файлы в папке sql часто содержат операторы DDL и DML и могут быть ответственны за изменение структуры таблицы, ключей, отношений и вставку данных фикстуры.

Итак, краткий ответ на ваш вопрос «Как вы обновляетесь» - позволить Magento сделать обновление для вас.Попытка воссоздать вручную все эти запросы была бы поводом для катастрофы, особенно с учетом взаимозависимостей между модулями.

Одно важное замечание - обязательно сделайте резервную копию своей базы данных перед обновлением !!!

2 голосов
/ 31 мая 2011

Процесс, который мы использовали, который работает:

  • извлеките свежую копию версии Magento, которую вы хотите обновить куда-либо
  • вручную создайте «app / etc / local.xml», который указывает на вашу старую базу данных
  • перейдите на страницу Magento - Magento запустит миграцию базы данных, обновив вашу базу данных
  • Теперь переустановите ваши модули и темы

Таким образом вы сохраняете все данные о заказе / продукте / клиенте / и т. Д.

Конечно, сначала вам нужно убедиться, что ваши модули и темы работают с новой версией Magento, а также обычные предостережения для «резервного копирования сначала» и т. Д. И т. Д. *

1 голос
/ 16 февраля 2011

Если вы обновляете magento:

  1. отключите вашу тему и восстановите настройки по умолчанию
  2. отключите все используемые пользовательские расширения
  3. обновите версию по версии (если выиспользуйте 1.3.2.4 сегодня, вам нужно применить все версии между последними, чтобы она работала без сбоев)
  4. включить и отладить ваш шаблон
  5. включить расширения по одному и отладить

Обновления базы данных обрабатываются сценариями установки версий

Чтобы проиллюстрировать это:

  • вам нужно 2 репозитория git.Один для magento-версии и один для вашего собственного сайта
  • создайте git-репозиторий с необходимыми версиями magento с помощью этого скрипта bash http://pastie.org/1573801
  • далее вам нужно скопировать свой собственный сайт, объединить строкуокончание (так что его можно сравнить с оригинальной версией magento) и сделать его как git-репо, это можно сделать вручную или с помощью rsync, я предпочитаю rsync way
  • сделать пустой каталог и инициировать это как git-репо,перетащите свою чистую версию magento на нее, как git pull ../magento magento-1.3.2.4
  • , скопируйте ваш действующий сайт, и вы сможете выполнить статус git, чтобы увидеть, что вы добавили, изменили
  • перемещать или отменять любые изменения, внесенные в основные файлы, перемещать изменения в шаблонах по умолчанию под собственную тему
  • фиксировать свои изменения, добавлять расширения и т. д., игнорировать то, что не нужно в .gitignore
  • отключите ваш шаблон и отключите расширения (переместите их из папки app / etc / modules /)
  • выполните команду git pull ../magento magento-nextversion, как это будетОбъедините все изменения и удалите все удаленные файлы из новой версии magento
  • . Посетите главную страницу своего сайта и посмотрите, как она обновляется
  • . Повторите git pull nextversion и посещение домашней страницы для каждой версии, которую нужно обновить.сделайте коммит между тем, если вам нужно
  • начать включать вашу тему и расширения одну за другой

Теперь вы можете создать оболочку или python, ruby ​​или любой другой скрипт, чтобы автоматизировать это для вас.Мой опыт говорит, что все это (с созданием репозиториев magento, копированием действующей базы данных в dev, повторным вызовом необходимых файлов, обновлением в цикле) займет менее 5 минут с 1.3.2.4 до 1.5.0.1 при автоматизации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...