【问题标题】:Manage Deployment of Database Changes in Magento在 Magento 中管理数据库更改的部署
【发布时间】:2013-09-26 09:22:47
【问题描述】:

我的 Magento 网站有三个实例:-

  1. 本地
  2. 在 Web 服务器上测试
  3. 在 Web 服务器上直播

我可以通过Git 管理我的文件/文件夹和代码更改,但是如何管理我的数据库更改。

当我第一次部署时,我会导入 sqldump。但在此之后,我如何更新/部署我的每一个数据库更改,主要是:-schema 更改?

【问题讨论】:

    标签: database git magento github magento-1.7


    【解决方案1】:

    处理此问题的方法是通过扩展引入数据库架构更改。与特定数据库模式相关的每个新功能或功能集都应作为扩展打包在一起。在 config.xml 中添加指令,然后您将能够包含与扩展版本相关的数据库安装文件,并且仅在检测到新扩展版本时加载一次。这是一个例子:

    确保您的 config.xml 中有这些指令:

    <config>
        ...
        <global>
            ...
            <resources>
                 <extensionname_setup>
                      <setup>
                          <module>Namespace_Extensionname</module>
                      </setup>
                 </extensionname_setup>
                 ...
            </resources>
        </global>
     </config>
    

    然后添加文件 /app/code/community/Namespace/Extensionname/sql/extensionname_setup/install-1.0.0.php

    $installer = $this;
    $installer->startSetup();
    
    /**
     * Create table 
     */
    $table = $installer->getConnection()
        ->newTable($installer->getTable('extensionname/entity'))
        ->addColumn('id', Varien_Db_Ddl_Table::TYPE_INTEGER, null, array(
            'identity'  => true,
            'unsigned'  => true,
            'nullable'  => false,
            'primary'   => true,
            ), 'Entity ID')
        ->addColumn('name', Varien_Db_Ddl_Table::TYPE_VARCHAR, 128, array(
            ), 'Name')
        ->addColumn('description', Varien_Db_Ddl_Table::TYPE_TEXT, null, array(
            ), 'Description')
        ->addColumn('created_at', Varien_Db_Ddl_Table::TYPE_TIMESTAMP, null, array(
            ), 'Creation Time')
        ->addColumn('updated_at', Varien_Db_Ddl_Table::TYPE_TIMESTAMP, null, array(
            ), 'Modified Time')
        ->setComment('Shop by Brand Table');
    $installer->getConnection()->createTable($table);
    
    $installer->endSetup();
    

    如果您对同一扩展有增量更改,则可以引入增量 DB 架构更改,并使用命名为与版本匹配的文件,并相应地更新扩展的版本。这也只会触发一次。示例:

    upgrade-<ver1>-<ver2>.php
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-13
      • 1970-01-01
      • 1970-01-01
      • 2011-07-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多