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