Magento 的 SUPEE-6788 补丁不适用于 Git/Github

Magento's SUPEE-6788 patch not working with Git/Github

在我的本地主机上成功安装 SUPEE-6788 补丁并将更改推送到开发后,我注意到我的开发环境中存在一些我在本地主机上没有看到的问题。

我发现的第一个问题是 none 的联系表单块出现了。

然后我注意到它不仅限于联系表单,它可以在任何有表单的地方使用(通过 CMS 页面)。

深入挖掘后(异常堆栈跟踪),我发现我缺少一个 table,它在调用 'permission_block' 之前并不存在。

进一步挖掘后,我发现补丁中发生了许多数据库更新,但在推送到开发时(通过升级脚本)没有 运行。直接查看补丁,我可以看到升级脚本实际上已更新,并且配置文件反映了这些更新(版本号和所有)。但出于某种原因,他们没有 运行.

现在我有点进退两难。我不确定发生了什么更新,什么更新没有发生(在开发环境中)。

Magento 发布的 SUPEE 补丁是否不能与 Git/Github 一起使用?

我是否需要将补丁单独应用到每个构建而不是在修补后推送构建?

Are the SUPEE patches Magento releases not meant to be used in conjunction with Git/Github

SUPEE 补丁中没有任何内容会阻止您使用 Git/GitHub 来管理您的存储库。

就是说 - 您的问题 完全 没有意义,我认为这可能是由于对这些数据库升级的应用方式存在误解。

Magento Setup Resource scripts 允许模块开发人员更新数据库。每当 Magento 加载 未缓存的 HTTP 请求时,它将

  1. 检查app/etc/(code|community|local)

  2. 中所有声明模块的版本
  3. 将该版本与存储在 core_resource table

  4. 中的版本进行比较
  5. 如果在文件系统上安装了更新版本,运行 sql/ 文件夹中的适当安装资源脚本

  6. 更新core_resource以指示安装的版本

根据您的问题,听起来可能发生了以下情况之一

  1. 您从源上传了更新的文件,但从未在生产中清除缓存,并且设置资源脚本从未 运行

  2. 您上传了更新的文件,确实清除了缓存,但是您的生产系统的某些问题阻止了脚本完全 运行。由于 MySQL 没有针对所有结构更改命令的 t运行 更新,因此设置资源脚本可能无法完全 运行,但仍会更新 core_resource table同版本

我首先比较 core_resource 中的扩展版本与文件系统上的版本(config.xml

此外,您可以使用 n98-magerun 程序中的 sys:setup:incremental 命令手动应用更新,而无需清除缓存。这还可以帮助您诊断哪些故障(如果有的话)可能会导致问题。

最后,由于您有一个可用的开发版本,作为最后的手段,您可以使用 mysqldump 转储每个数据库的结构,然后与可视化差异工具(如 WinMerge ) 以确定缺少什么 tables/rows。您需要为此应用一些智能(因为开发人员可能还有其他不需要的东西)