将迁移标记为在laravel中运行

时间:2018-02-24 02:07:57

标签: laravel artisan artisan-migrate

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

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

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

php artisan migrate:status 

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

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

4 个答案:

答案 0 :(得分:1)

目前(Laravel< = 5.6),没有命令更新数据库以将迁移标记为运行。你只需要手动完成。

答案 1 :(得分:1)

我刚刚做了以下事情:

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

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

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

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

答案 2 :(得分:0)

您始终可以创建自己的工匠命令。

答案 3 :(得分:0)

您写道,您直接在数据库中运行迁移的sql,因此我认为对于您来说,再运行2条语句也可以。

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

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

首先,您必须看到最后一个批次号是

SELECT MAX(batch) from migrations;

假设上述查询返回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);

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

也许您可以通过一个查询来完成任务...我将把该任务保留为开放状态,以征询sql专家的意见。