在我的localhost上成功安装SUPEE-6788补丁并将更改推送到开发之后,我注意到我的开发环境中出现了一些问题,我在我的Localhost上没有看到。
我发现的第一个问题是我的联系表单块都没有出现。
然后我注意到它并不仅限于联系表格,它在任何地方都有一个表格(通过CMS页面)。
在深入挖掘(异常堆栈跟踪)之后,我发现在调用'permission_block'之前我错过了一个不存在的表。
经过一番挖掘后,我发现补丁中发生了许多数据库更新,这些更新在推送到开发时没有运行(通过升级脚本)。直接查看补丁,我可以看到升级脚本实际上已更新,并且配置文件反映了这些更新(版本号和所有)。但出于某种原因,他们没有跑。
现在我有点陷入两难境地了。我不确定发生了什么更新以及哪些更新没有(在开发环境中)。
Magento发布的SUPEE补丁是不是要与Git / Github一起使用?
我是否需要将修补程序单独应用于每个构建,而不是在修补后推送构建?
答案 0 :(得分:4)
SUPage补丁Magento版本是否不适合与Git / Github一起使用
SUPEE补丁中没有任何内容可以阻止您使用Git / GitHub来管理您的存储库。
那就是说 - 你的问题不是相当有意义,我认为这可能是由于对如何应用这些数据库升级的误解。
Magento Setup Resource scripts允许模块开发人员更新数据库。每当Magento加载未缓存的 HTTP请求时,它将
检查app/etc/(code|community|local)
将该版本与core_resource
表
如果文件系统上安装了更新版本,请在sql/
文件夹中运行相应的安装资源脚本
更新core_resource
以指明已安装的版本
根据您的提问,听起来好像发生以下情况之一
您从源上传了更新的文件,但从未在生产中清除过缓存,且设置资源脚本从未运行
您上传了更新的文件,确实清除了缓存,但生产系统的某些内容阻止了完全运行的脚本。由于MySQL没有针对所有结构更改命令的事务更新,因此设置资源脚本可能无法完全运行,但仍然使用相同版本更新core_resource
表。
我首先将core_resource
中的扩展版本与文件系统上的版本(config.xml
中)进行比较
此外,您可以使用sys:setup:incremental
程序的mysqldump
命令手动应用更新而不清除缓存。这也可以帮助您诊断哪些故障(如果有)可能导致问题。
最后,由于您有一个可用的开发版本,作为最后的手段,您可以使用struct ss {} // a structure
let myArr1: [Any] = [4, [ss(), ss()], [5, [4.5, ss()]]] // Don't compile
转储每个数据库的结构,然后与视觉差异工具(如n98-magerun)进行比较确定缺少哪些表/行。你需要对此应用一些智能(因为dev可能还有其他不需要的东西)