gpt4 book ai didi

mysql - Codeigniter 迁移 + 多个表 + 每个表一个迁移文件

转载 作者:可可西里 更新时间:2023-11-01 07:50:02 24 4
gpt4 key购买 nike

我想开始使用 DBForge 和 CI 中内置的迁移类,但我不确定如何为我的所有表创建迁移。

我的想法是在我的安装程序过程中为以下每个表都有一个迁移文件:advertisements, announcements, config, users, points.. 当用户安装应用程序时,它会自动运行这些迁移文件并创建表。

IE:001_advertisements、001_announcements、001_config、001_users、001_points

001_map_advertisements

class Migration_map_advertisements extends CI_Migration {

public function up(){
$this->dbforge->add_field(array(
'id' => array(
'type' => 'INT',
'constraint' => 11,
'unsigned' => TRUE,
'auto_increment' => TRUE
),
'youtube_id' => array(
'type' => 'VARCHAR',
'constraint' => '255',
),
'status' => array(
'type' => 'int',
'constraint' => 11,
'null' => FALSE,
'default' => 1
),
'timestamp' => array(
'type' => 'int',
'constraint' => 11
),
'type' => array(
'type' => 'VARCHAR',
'default' => 'video'
),
'filename' => array(
'type' => 'VARCHAR',
'constraint' => '255'
),
'url' => array(
'type' => 'varchar',
'constraint' => '255'
),
'description' => array(
'type' => 'varchar',
'constraint' => 64
),
'title' => array(
'type' => 'varchar',
'constraint' => 64
)
));
$this->dbforge->create_table('map_advertisements', TRUE);
}

public function down()
{
$this->dbforge->drop_table('map_advertisements');
}

但是,如果我这样做并尝试运行安全 Controller :

class Developer extends ADMIN_Controller {
function __construct(){
parent::__construct();
} #end constructor function
public function migrate($index){
$this->load->library('migration');

if ( !$this->migration->version($index) ){
show_error($this->migration->error_string());
}else{
echo 'migrated';
}

}
}

我收到一条错误消息,指出有多个 version 1 迁移并且迁移过程失败。在 CI 中还有其他方法可以解决这个问题吗?

最佳答案

是的,每个版本只能有一个迁移文件。迁移不是特定于表的,而更像是“我的应用程序从版本 x 到版本 x+1 需要哪些架构更改?”

将所有现有的迁移文件合并为 1 个文件,并将其命名为 001_initial_schema.php。然后,当添加新功能时,为该功能创建一个新的模式文件。如果您有一个部署周期(例如每周 SCRUM sprint),那么每次部署都有这些迁移文件之一是很好的。

关于mysql - Codeigniter 迁移 + 多个表 + 每个表一个迁移文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9915024/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com