PHP mysql数据迁移,如何自动化PHP/MySQL应用程序的迁移(架构和数据)

我有一个“Schema”对象,我使用 – 但你可以做同样没有类..

你想做的是创建一个“db_schema_versions”表:

CREATE TABLE db_schema_versions (

`table` varchar(255) NOT NULL PRIMARY KEY,

`version` INT NOT NULL

)

在您的数据库可以跟踪它是什么版本#之后 – 它可以自动执行SQL升级。

您应该在升级模式时锁定模式表。这样你就不会在尝试升级你的架构的同时有两个请求。

所以 – 跟踪你正在升级的版本 – 构建一个大的开关 – 这样的:

class SNTrack_Db_Schema extends MW_Db_Schema_Abstract {

protected $table = "sntrack_db_schema";

protected $version = 5;

protected function upgrade($fromVersion) {

// don't break

switch($fromVersion) {

case 0:

$this->db->query('CREATE TABLE sntrack_inbound_shipment (

`id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT,

`from` VARCHAR(255) NOT NULL,

`date` DATE NOT NULL,

`invoice` VARCHAR(255) NOT NULL,

`notes` TEXT

)');

$this->setVersion(1);

case 1:

$this->db->query('ALTER TABLE sntrack_details ADD `shipment_id` INT');

$this->db->query('ALTER TABLE sntrack_product ADD `inventory` INT NOT NULL DEFAULT 0');

$this->db->query('CREATE TABLE sntrack_inventory_shipment (

`shipment_id` INT NOT NULL,

`product_id` INT NOT NULL,

`qty` INT NOT NULL,

PRIMARY KEY (`shipment_id`, `product_id`)

)');

$this->setVersion(2);

...etc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值