2013-09-26 17 views
1

我有我的Magento站點的三個實例: -管理數據庫變更部署在Magento

  1. 本地
  2. Web服務器上測試
  3. 直播Web服務器上

我可以管理我的文件/文件夾和代碼通過Git更改,但是如何管理我的數據庫更改。

當我第一次部署時,我將導入sqldump。但隨後,我如何更新/部署我的每個數據庫更改,主要是:-schema更改?

回答

0

處理此問題的方法是通過擴展引入數據庫模式更改。與特定數據庫模式相關的每個新功能或功能集應作爲擴展組件打包在一起。在您的config.xml中添加指令,然後您將能夠包含與擴展版本相關的數據庫安裝文件,並且只會在檢測到新擴展版本時加載一次。這裏有一個例子:

確保你有你的config.xml中這些指令:

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

然後添加文件 /應用/代碼/社區/命名空間/ EXTENSIONNAME/SQL/extensionname_setup /安裝-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