我正致力于自动部署Magento(1.7.0.2社区)商店。为了做到这一点,我有一个包含完整代码库的Git存储库,包括所有已安装的模块。
我在部署时针对空数据库运行基于命令行的安装程序(install.php
)。但显然模块的SQL更新脚本在安装程序完全完成之前运行,这会导致出现问题:
有一个(自定义)脚本可以创建一个新的(adminhtml)用户角色,似乎这个角色是在Magento自己的Administrators
角色之前创建的。这也不错,但最初的管理员用户是作为我们的自定义角色的一部分创建的 - 而不是管理员! (我怀疑安装程序在创建用户时只使用parent_id = 1
之类的内容,1
通常是管理员组,但在这种情况下,它是我们的自定义组。)
所以,我的问题是:如何在安装程序运行时保持升级脚本不被执行(并让它在第一页加载时运行),或告诉安装程序仅运行此升级脚本 初始用户和角色设置完成后?或者你看到一个完全不同的解决方案?
如果有用:这是我们的升级脚本基本上做的:
<?php
$roleData = array(
'role_name' => 'My_Shiny_Role',
'role_type' => 'G',
);
$role = Mage::getModel('admin/role')->setData($roleData)->save();
$resources[0] = '__root__';
Mage::getModel("admin/rules")
->setRoleId($role->getId())
->setResources($resources)
->saveRel();
(它没有封装在类中,只是简单的PHP。)
答案 0 :(得分:0)
可能有一个“Magento Way”来禁止执行数据库更新功能,但你可以通过以下方式在SQL中执行:
UPDATE
core_resource
SET
version = CONCAT('9.', version),
data_version = CONCAT('9.', data_version);
然后重新启用它:
UPDATE
core_resource
SET
version = SUBSTR(version, 3),
data_version = SUBSTR(data_version, 3);