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 请求时,它将
检查app/etc/(code|community|local)
中所有声明模块的版本
将该版本与存储在 core_resource
table
中的版本进行比较
如果在文件系统上安装了更新版本,运行 sql/
文件夹中的适当安装资源脚本
更新core_resource
以指示安装的版本
根据您的问题,听起来可能发生了以下情况之一
您从源上传了更新的文件,但从未在生产中清除缓存,并且设置资源脚本从未 运行
您上传了更新的文件,确实清除了缓存,但是您的生产系统的某些问题阻止了脚本完全 运行。由于 MySQL 没有针对所有结构更改命令的 t运行 更新,因此设置资源脚本可能无法完全 运行,但仍会更新 core_resource
table同版本
我首先比较 core_resource
中的扩展版本与文件系统上的版本(config.xml
)
此外,您可以使用 n98-magerun 程序中的 sys:setup:incremental
命令手动应用更新,而无需清除缓存。这还可以帮助您诊断哪些故障(如果有的话)可能会导致问题。
最后,由于您有一个可用的开发版本,作为最后的手段,您可以使用 mysqldump
转储每个数据库的结构,然后与可视化差异工具(如 WinMerge ) 以确定缺少什么 tables/rows。您需要为此应用一些智能(因为开发人员可能还有其他不需要的东西)
在我的本地主机上成功安装 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 请求时,它将
检查
app/etc/(code|community|local)
中所有声明模块的版本
将该版本与存储在
core_resource
table 中的版本进行比较
如果在文件系统上安装了更新版本,运行
sql/
文件夹中的适当安装资源脚本更新
core_resource
以指示安装的版本
根据您的问题,听起来可能发生了以下情况之一
您从源上传了更新的文件,但从未在生产中清除缓存,并且设置资源脚本从未 运行
您上传了更新的文件,确实清除了缓存,但是您的生产系统的某些问题阻止了脚本完全 运行。由于 MySQL 没有针对所有结构更改命令的 t运行 更新,因此设置资源脚本可能无法完全 运行,但仍会更新
core_resource
table同版本
我首先比较 core_resource
中的扩展版本与文件系统上的版本(config.xml
)
此外,您可以使用 n98-magerun 程序中的 sys:setup:incremental
命令手动应用更新,而无需清除缓存。这还可以帮助您诊断哪些故障(如果有的话)可能会导致问题。
最后,由于您有一个可用的开发版本,作为最后的手段,您可以使用 mysqldump
转储每个数据库的结构,然后与可视化差异工具(如 WinMerge ) 以确定缺少什么 tables/rows。您需要为此应用一些智能(因为开发人员可能还有其他不需要的东西)