PHP mysql数据迁移,如何自动化PHP/MySQL应用程序的迁移(架构和数据)
我有一個(gè)“Schema”對(duì)象,我使用 – 但你可以做同樣沒(méi)有類..
你想做的是創(chuàng)建一個(gè)“db_schema_versions”表:
CREATE TABLE db_schema_versions (
`table` varchar(255) NOT NULL PRIMARY KEY,
`version` INT NOT NULL
)
在您的數(shù)據(jù)庫(kù)可以跟蹤它是什么版本#之后 – 它可以自動(dòng)執(zhí)行SQL升級(jí)。
您應(yīng)該在升級(jí)模式時(shí)鎖定模式表。這樣你就不會(huì)在嘗試升級(jí)你的架構(gòu)的同時(shí)有兩個(gè)請(qǐng)求。
所以 – 跟蹤你正在升級(jí)的版本 – 構(gòu)建一個(gè)大的開關(guān) – 這樣的:
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
總結(jié)
以上是生活随笔為你收集整理的PHP mysql数据迁移,如何自动化PHP/MySQL应用程序的迁移(架构和数据)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 蔚来回应汽车坠楼致两名测试员罹难:非常痛
- 下一篇: 摩托罗拉骁龙8+旗舰卖2999元悬了:2