0

我正在致力于自动化 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。)

4

1 回答 1

0

可能有一种“Magento 方式”可以禁用数据库更新功能的执行,但您可以通过以下方式在 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);
于 2013-03-26T20:10:55.890 回答