导读:本期聚焦于小伙伴创作的《CodeIgniter 4 中如何精确执行单个迁移文件(Migration)》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《CodeIgniter 4 中如何精确执行单个迁移文件(Migration)》有用,将其分享出去将是对创作者最好的鼓励。

在 CodeIgniter 4 项目里,迁移(Migration)用来以版本化的方式变更数据库结构。当项目积累了很多迁移文件后,有时我们只需要把其中某一个迁移应用到数据库,而不希望执行其余未运行的迁移。下面介绍具体的做法。

CodeIgniter 4 中如何精确执行单个迁移文件(Migration)

迁移文件的基本约定

CodeIgniter 4 的迁移文件通常放在 app/Database/Migrations/ 目录下,文件名格式为 YYYY-MM-DD-HHIISS_名称.php,类需要实现 Migration 接口并提供 up()down() 方法。例如:

<?php

namespace AppDatabaseMigrations;

use CodeIgniterDatabaseMigration;

class AddUserScore extends Migration
{
    public function up()
    {
        // 新增用户积分字段
        $this->forge->addColumn('users', [
            'score' => [
                'type'       => 'INT',
                'constraint' => 11,
                'default'    => 0,
                'null'       => false,
            ],
        ]);
    }

    public function down()
    {
        // 回滚时删除字段
        $this->forge->dropColumn('users', 'score');
    }
}

使用命令行精确执行单个迁移

CodeIgniter 4 自带 spark 命令行工具,可以通过 migrate:latest 配合 --batch 或者指定版本的方式来限制范围。若想只执行某一个迁移文件,可以借助 migrate:status 查看状态,然后用 migrate 指定步骤。

查看迁移状态

php spark migrate:status

该命令会列出所有迁移以及是否已执行。假设我们只想执行上面创建的 AddUserScore 迁移,而它之前没有运行过,可以用以下步骤方式:

php spark migrate --step=1

当有多个未执行迁移时,--step=1 只运行最近一个未执行的迁移文件。如果你想确保运行的是特定文件,可以临时调整文件名时间戳,使其排在最前,再执行 step=1。

按批次回滚单个迁移

如果执行错了,可以用 migrate:rollback 配合 --batch=1 回退最近一批:

php spark migrate:rollback --batch=1

通过代码调用单个迁移

除了命令行,也可以在控制器或脚本里用 foreach 精确调用某个迁移类的 up() 方法:

<?php

use AppDatabaseMigrationsAddUserScore;

$ migration = new AddUserScore();
$migration->up();

不过这种方式绕过了框架的迁移记录表,不建议在生产环境频繁使用。

常见问题与处理

  • 执行后提示类找不到:检查文件命名空间与 app/Database/Migrations 目录是否一致。
  • 字段已存在报错:先确认 migrate:status 中该迁移是否已被标记完成。
  • 只想执行某个文件却跑了全部:检查是否漏写 --step 参数。
场景推荐命令
执行最近一个未运行迁移php spark migrate --step=1
回退最近一批迁移php spark migrate:rollback --batch=1
查看所有迁移状态php spark migrate:status

掌握这些方式之后,你就能在 CodeIgniter 4 中精确控制单个迁移文件的执行,避免不必要的数据库变动。

CodeIgniter4migration命令行修改时间:2026-07-28 09:03:24

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。