magento 为什么我的安装程序SQL在编译器被禁用时不运行?

mwg9r5ms  于 2022-11-12  发布在  其他
关注(0)|答案(1)|浏览(126)

我创建了一个脚本化的SQL安装程序,当我访问MySQL并在服务器中搜索时,我找不到用脚本创建的新列。我的代码是:

<?php 

$installer = new Mage_Sales_Model_Resource_Setup('core_setup');

//entities for options in table Sales Flat Order Item
$entities = array(
    'order_item'
);

//entity for desactivate_count in table Sales Flat Order
$entitydes = array(
    'order'
);

//for type text
$optionstxt = array(
    'type'     => 'text',
    'grid' => false
);

//for type int
$optionsint = array(
    'type' => 'int',
    'grid' => false,
    'default' => '0'
    );

//just for column incomm_desactivate_count
$optionsdesc = array(
    'type' => 'int',
    'grid' => true,
    'default' => '0'
    );

foreach ($entities as $entity) {
    $installer->addAttribute($entity, 'incomm_request_active_code', $options);
    $installer->addAttribute($entity, 'incomm_cancel', $options);
    $installer->addAttribute($entity, 'incomm_exception_count', $optionsint); //value int(2)
    $installer->addAttribute($entity, 'incomm_return_active_code', $options);
    $installer->addAttribute($entity, 'incomm_activated', $optionsint); //value int(1)
}

foreach ($entitydes as $entity) {
    $installer->addAttribute($entity, 'incomm_desactivate_count', $optionsdesc); //value int(2)
}

$installer->endSetup();

我发现Magento Module SQL does not run一个评论说,编译执行安装程序SQL在我的自定义模块。我需要知道为什么我必须这样做...在这个链接中,我找不到任何更多的信息。

1szpjjfi

1szpjjfi1#

你不需要编译来运行升级脚本。事实上,我认为你可能需要暂时关闭编译来运行升级脚本(尽管我不太确定)。
这取决于您的模块版本的值,该值存储在Magento数据库的core_resource表中。
[YOUR单元]

config.xml  [configuraton-file] - The version number resides in this.

sql (folder) > *.php [upgrade php scripts]

现在,Magento运行您的模块中的升级脚本,如果(两个都是真的):

  1. config.xml中模块的版本号大于“core_resource”模块中模块的版本号。
    1.在config.xml文件中声明的新版本的脚本驻留在模块的sql文件夹中。Magento在文件命名约定方面非常独特。
    我认为core_resource表中的模块版本号已经是最新版本,所以它不会搜索任何升级脚本。所以,我建议您删除模块的条目或降低Magento数据库的core_resource表中的版本号。然后按照Mageto标准维护文件,您的升级脚本就会运行。

相关问题