Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Codeigniter 原子代码点火器迁移_Codeigniter_Atomic_Database Migration - Fatal编程技术网

Codeigniter 原子代码点火器迁移

Codeigniter 原子代码点火器迁移,codeigniter,atomic,database-migration,Codeigniter,Atomic,Database Migration,我正在使用CodeIgniter 3.0.3,并且刚刚开始实施文档中所述的迁移。由于我不熟悉这种迁移,我往往会犯错误,在应用迁移时,我的数据库处于不一致的状态,介于上一次迁移和新迁移之间 有没有简单的方法使迁移原子化?因此,它们要么成功,要么失败,并且没有中间状态。由于CI\u迁移核心类是不可扩展的,因此,实现这一点的唯一方法(除了替换整个类)似乎是在迁移中手动使用事务: class Migration_Add_parent extends CI_Migration { public

我正在使用CodeIgniter 3.0.3,并且刚刚开始实施文档中所述的迁移。由于我不熟悉这种迁移,我往往会犯错误,在应用迁移时,我的数据库处于不一致的状态,介于上一次迁移和新迁移之间


有没有简单的方法使迁移原子化?因此,它们要么成功,要么失败,并且没有中间状态。

由于
CI\u迁移
核心类是不可扩展的,因此,实现这一点的唯一方法(除了替换整个类)似乎是在迁移中手动使用事务:

class Migration_Add_parent extends CI_Migration {

    public function up() {
        $this->db->trans_start();
        $this->db->query('ALTER TABLE people ADD COLUMN parent int;');
        $this->db->query('ALTER TABLE people ADD CONSTRAINT people_parent_fkey FOREIGN KEY (parent) REFERENCES people (id);');
        $this->db->trans_complete();
    }

    public function down() {
        $this->db->trans_start();
        $this->db->query('ALTER TABLE people DROP CONSTRAINT people_parent_fkey;');
        $this->db->query('ALTER TABLE people DROP COLUMN parent;');
        $this->db->trans_complete();
    }
}