1

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

  1. 当地的
  2. 在 Web 服务器上测试
  3. 活在网络服务器上

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

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

4

1 回答 1

0

处理这个问题的方法是通过扩展引入 DB 模式更改。与特定 DB 模式相关的每个新功能或功能集都应作为扩展打包在一起。在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
于 2013-09-27T16:24:31.113 回答