【问题标题】:Magento's SUPEE-6788 patch not working with Git/GithubMagento 的 SUPEE-6788 补丁不适用于 Git/Github
【发布时间】:2015-11-04 19:17:31
【问题描述】:

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

我发现的第一个问题是我的联系表单块都没有出现。

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

在深入挖掘(异常堆栈跟踪)之后,我发现我缺少一个在称为“permission_block”之前不存在的表。

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

现在我有点进退两难了。我不确定发生了哪些更新以及没有发生哪些更新(在开发环境中)。

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

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

【问题讨论】:

  • 推送包含安装程序脚本的任何内容时,您必须像手动升级一样对待它。在推送之前刷新并关闭 Magento 缓存并禁用编译器。在所有补丁都到位后的首次运行非常重要。
  • 感谢您的建议!在推送之前我没有关闭缓存,但是在将更新推送到 dev 之前和之后,我确实刷新了所有内容(手动和通过 Magento 的管理员)。我从未见过由于启用缓存而导致升级脚本失败。它通常在我清除缓存后立即运行。在推送之前不会禁用缓存会导致此问题吗?编辑* 我忘了提,升级脚本的一部分在 dev 上工作;密码字段设置为 100 个字符,但未创建两个表。

标签: git security magento patch


【解决方案1】:

SUPEE 补丁 Magento 发行版是否不能与 Git/Github 结合使用

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

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

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

  1. 检查app/etc/(code|community|local)中所有声明模块的版本

  2. 将该版本与core_resource 表中存储的版本进行比较

  3. 如果文件系统上安装了更新版本,请在 sql/ 文件夹中运行相应的设置资源脚本

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

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

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

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

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

此外,您可以使用sys:setup:incremental 命令(它是n98-magerun 程序的一部分)在不清除缓存的情况下手动应用更新。这还可以帮助您诊断哪些故障(如果有)可能会导致问题。

最后,既然你有一个可以工作的开发版本,作为最后的手段,你可以使用mysqldump来转储每个数据库的结构,然后用一个可视化的差异工具(比如WinMerge)来确定哪些表/行丢失。您需要对此应用一些智能(因为开发人员可能还有其他不需要的东西)

【讨论】:

  • 就像你说的那样。 Magento 认为它安装了更新,即使它没有。我以前从未使用过 n98-magerun,但从我读过的内容来看,这听起来很棒。我现在正在尝试。另外,感谢最坏情况的建议。尽管这样做很麻烦,但我可能需要对数据库进行比较。
  • 我决定先检查从 SUPEE-6788 更新的所有安装脚本,而不是执行完整的数据库转储和差异。原来只创建了两个表(permission_variable 和 permission_block)。唯一的其他修改是对 admin_user 表(密码字段)。我对这三个表进行了比较,并将差异应用于开发数据库。现在一切似乎都井然有序,但我仍然无法查明根本原因。但我还在挖掘。一旦我弄清楚了,我会做一个跟进的帖子。
  • 我仍然不能 100% 确定问题的原因是什么,但我做了昨天在我的开发服务器上执行的相同测试,并且由于某种原因它这次成功了。目前,这是最好的答案。如果网络工程师回复原因,我会确保发布它。再次感谢您的所有帮助!
  • 感谢您的信息。由于某种原因,它仍然不会为我创建这两个表,而且我没有另一个数据库可以引用来复制结构。 n98 的增量运行没有显示任何错误,但似乎我的管理 sql 设置脚本完全没有运行。
猜你喜欢
  • 2016-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多