Рабочий процесс для базы данных Magento
Я планирую рабочий процесс Magento для постановки и живой среды.
Я хочу использовать git для файловой системы. Рабочий процесс здесь уже отсортирован.
Но как управлять изменениями базы данных?
В то время как на реальном сервере есть новые данные о клиентах, у меня есть новая конфигурация и данные о продукте в промежуточной системе. Есть ли какой-либо инструмент для разрешения этих конфликтов?
Я исследовал себя https://www.mysql.de/products/workbench/ есть ли способ сделать это с помощью этого инструмента? У кого-нибудь есть опыт в этом?
2 answers
Для конфигурации, управляемой разработчиком, я настоятельно рекомендую сценарии обновления. Создайте модуль Projectname_Config
с ресурсом настройки и поместите свои сценарии конфигурации в app/code/local/Projectname/Config/data
Важно использовать сценарии обновления данных , потому что они запускаются после сценариев обновления sql. Поэтому, когда вы обновляете систему с устаревшей базой данных, сначала устанавливаются все расширения (создаются таблицы и т.д.), а затем настраиваются.
Схема именования данных сценарии обновления - это
-
data-install-x.x.x.php
для установки версии x.x.x -
data-upgrade-x.x.x-y.y.y.php
для обновления версии x.x.x до версии y.y.y
Пример сценария обновления
/** @var Mage_Catalog_Model_Resource_Setup $installer */
$installer = $this;
$germanStoreId = Mage::app()->getStore('de')->getId();
$installer->setConfigData('general/store_information/name', 'My cool shop');
$installer->setConfigData('general/store_information/name', 'Mein knorke Laden', 'stores', $germanStoreId);
Сложные данные
Теоретически вы можете создавать любые данные в этих сценариях, но я обычно использую их только для простых моделей, таких как страницы и блоки CMS, иногда для категорий.
Я не думаю, что продукты следует создавать в промежуточной системе, а затем перемещать. Если вы должны это сделать, я бы попробовал ImportExport
экспортировать новые продукты на этапе подготовки в CSV и импортировать их в производство.
Но обычный подход заключается в том, чтобы в любом случае управлять своими продуктами за пределами Magento, а затем вы можете импортировать их в каждый экземпляр.
Для других сложных продуктов, таких как правила корзины покупок, они настолько сложны и подвержены ошибкам, что я предпочитаю тратить время на их создание вручную в каждой системе.
Вы найдете несколько инструментов, которые обещают перенос любых данных из одного хранилища в другое, но я не думаю, что существует серебряная пуля в решении этой проблемы.
Существует инструмент под названием https://mageflow.com /. Они утверждают, что могут отслеживать почти все объекты Magento, но я лично еще не пробовал.
Другой способ сделать это - иметь модуль со сценариями установки. Этот модуль может находиться в вашем репозитории git, и вы можете увеличивать номер версии и добавлять новый сценарий установки каждый раз, когда хотите внести изменения в базу данных в действующую систему. Это может быть серьезная ПИТА; но это лучший "ручной" метод, который я знаю из.