将迁移标记为在 Laravel 中运行

And*_*rew 6 laravel artisan-migrate laravel-artisan

我的迁移失败了,所以我只是在 MySQL Workbench 中手动运行了一个查询。

是否有工匠命令将迁移标记为完成?因此,当我运行未来的迁移时,它会跳过我知道不需要运行的迁移。

我可以使用此命令列出它们及其状态,并查看哪些已运行,哪些未运行:

php artisan migrate:status 
Run Code Online (Sandbox Code Playgroud)

如果没有命令,我可能可以手动将条目插入到数据库迁移表中。(但目前没有迁移:P)

我想我也可以...删除迁移。

pil*_*lat 9

我刚刚做了以下事情:

  1. 注释掉YourMigrationClass::up()方法的内容。像这样:

    class AddSessionIdToActivitiesTable extends Migration
    {
    
        public function up()
        {
            /* commenting this out:
            Schema::table('activities', function (Blueprint $table) {
                $table->integer('session_id')->nullable();
            });
            */
        }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 跑: php artisan migrate

  3. 检查它是否标记为“Ran?”: php artisan migrate:status

  4. (可选)取消注释该方法的内容,使其在您的 VCS 中用作文档。


Fer*_*Fer 5

您写道,您直接在数据库中运行迁移的 sql,所以我假设您运行另外 2 个语句也可以。

使用 laravel 5.7(可能还有一些较低版本),您需要在数据库中(在migrations表中)填充迁移信息。

您需要的信息是migration(不带.php扩展名的文件名)和batch编号(例如,在回滚迁移时决定一次运行哪些迁移)

首先,您必须查看最后一个批号是:

SELECT MAX(batch) from migrations;
Run Code Online (Sandbox Code Playgroud)

假设上面的查询返回42,那么我们必须插入带有批号的数据42 + 1 = 43

假设您要标记为运行的迁移是database/migrations/2019_01_29_091850_update_jobs_table_for_laravel_5_3.php

填充您需要运行的信息:

-- note that you should not include the .php extension
INSERT INTO migrations VALUES ("2019_01_29_091850_update_jobs_table_for_laravel_5_3", 43);
Run Code Online (Sandbox Code Playgroud)

然后运行php artisan migrate:status将报告迁移为运行。

也许您可以通过一个查询完成任务...我将保留该任务以供 sql 专家发表评论。


Ake*_*rts 1

目前(Laravel <= 5.6),没有命令可以更新数据库以将迁移标记为运行。您只需手动执行此操作即可。