У нас есть эта проблема atm:
Клиент обновляет свой магазин с CE 1.4 до CE 1.8. Обновление файлов прошло успешно, а обновление базы данных также прошло успешно на нашей машине для разработки.
Когда мы пытаемся обновить live-db клиента на его live-машине (подключить 1.8-Magento к базе данных и открыть его в браузере), процесс, кажется, запускается некоторое время и заканчивается ошибкой 500.
Журнал ошибок PHP пуст; так как это общий хост, мы не можем изменить настройки apache или mysql; хостер, хотя и «специализированный im magento hosting», не желает менять настройки и говорит мне, что я мог бы завершить обновление базы данных, многократно обновляя окно браузера при возникновении ошибки 500, потому что magento будет обновляться небольшими шагами , Это может продолжаться часами.
Мой вопрос сейчас:
- Это правда? Я думал, что sql-операторы для обновлений базы данных будут обернуты в транзакции, поэтому их можно откатить, если что-то пойдет не так.
- Может ли ответ дать подсказку, где я мог бы посмотреть в коде, чтобы найти ответ на этот вопрос?
Спасибо за ваше время!
источник
Ответы:
Ваши инженерные инстинкты здоровы, но то, что происходит в реальном мире программирования стартапов для бизнеса, более сложно / безобразно.
Система ресурсов установки Magento не включает отдельные сценарии в транзакцию. Для этого есть множество причин, но я всегда предполагал, что основной причиной является то, что Magento начал свою жизнь явно с MySQL, и многие / большинство операторов определения данных (
ALTER TABLE
и т. Д.) В MySQL вызывают неявную фиксацию .Хотя вы найдете индивидуальные настройки ресурса, иногда используйте транзакции.
Сама система просто запускает сценарии и надеется на лучшее.
Если вы заинтересованы в коде, который запускает эти ресурсы, лучшее место для начала, вероятно, здесь
_modifyResourceDb
Метод является тот , который включает в себя фактические сценарии установки ресурсовОчень хакерским решением вашей проблемы было бы временное переопределение core-hack / code-pool-override, которое было явно завершено после 5-10 включений, и повторите его. Это уменьшило бы вероятность того, что сценарий установки установится на полпути.
Лучшим решением, и одним из моих личных проектов «возможно, один день», был бы пользовательский скрипт, который использовал основные методы Magento для проверки обновлений, которые необходимо применить, перечисления их и предоставления пользователям возможности просматривать их один за другим.
источник