2011-12-27 90 views
5

我注意到在Magento认证开发者学习指南中,在数据库部分提到的其中一个项目是“编写降级(回滚)脚本”。Magento是否支持模块的降级/回滚脚本?

我已经做了一些搜索,看是否支持降级脚本,它似乎不是。我在今年早些时候发现thread,似乎他们认为当时不支持降级脚本。

而且,做了一些谷歌搜索,发现这个article讨论似乎是在核心回滚脚本时的一些初步支持。

我还搜查下的应用程序/代码/核心/法师的“回滚”和“降级”和几乎大部分的东西,我发现是有关数据库事务回滚代码。

如果学习指南不支持,为什么学习指南会讨论这个问题?我肯定错过了什么。

回答

5

当前的Magento的版本有回滚数据库迁移脚本没有实现,其中回退是指识别模块的版本数量减少和运行相应的脚本。

请记住,您正在查看学习指南,而不是手册。

虽然没有了在Magento的当前版本正式回滚,如Magento的开发人员,您可能需要回滚在前面的模块升级做数据库更改的支持。我已经准备好描述该场景的问题,并提供测试您对现有Magento功能知识的答案。

+2

事实上,这是事实。 – benmarks 2011-12-27 21:35:20

+0

谢谢艾伦,当然有道理。抨击学习指南让我遍布地图。它的写法相当出色,我认为从给予你足够的沉痛感而不是给予你所有的东西,从字面上看,你仍然需要做一些练习和挖掘。 那么,我的下一个问题是如何与Magento检测到版本号减少的事件挂钩 - 除了只是简单地覆盖一个类之外 - 但我会在发布该问题之前做更多的挖掘。 – kalenjordan 2011-12-27 21:44:45

0

它在这里: Mage_Core_Model_Resource_Setup::applyUpdates()可用,至少从Magento 1.3。

+1

嗯,但是当我跟踪下来到_modifyResourceDb(),它似乎像TYPE_DB_ROLLBACK $操作类型不支持?它只是从switch语句中缺少。 你不是有一个例子回滚脚本躺在某处?或者它只是以编程方式反转设置脚本中的设置步骤? – kalenjordan 2011-12-27 09:44:34

+1

哦,你说得对。从'_modifyResourceDb'方法是否清楚,回滚和卸载不工作:) – vsushkov 2011-12-27 09:50:44

+0

但你可以写你自己的设置类,这将支持回滚和卸载(见'Mage_Core_Model_Resource_Setup :: applyAllUpdates()','字符串$ setupClass =新的$ className($ resName);') – vsushkov 2011-12-27 09:56:20