运行一个特定的laravel 4迁移(单个文件)

我不想在laravel 4上运行All Outstanding Migrations。我有5次迁移。 现在我只想运行一个迁移。 而不是做:php artisan migrate我想运行一个特定的迁移,如:php artisan migrate MY_MIGRATION_TO_RUN

看起来你做错了。

迁移由Laravel逐一执行,按照创build的顺序依次执行,以便跟踪执行和执行顺序。 这样Laravel将能够安全地回滚一批迁移,而不会冒破坏数据库的风险。

赋予用户手动执行它们的权力,使得不可能知道(肯定)如何回滚数据库中的更改。

如果你真的需要在你的数据库中执行一些东西,你最好创build一个DDL脚本并在你的web服务器上手动执行它。

或者只是创build一个新的迁移,并使用工匠执行它。

编辑:

如果你需要先运行它,你需要先创build它。

如果您只需要对它们进行重新sorting,请将文件重命名为第一个。 使用timestemp创build迁移:

 2013_01_20_221554_table 

要在此之前创build新的迁移,您可以将其命名

 2013_01_19_221554_myFirstMigration 

只需将已经运行的迁移移出app / config / database / migrations /文件夹即可。 然后运行命令php artisan migrate 。 为我工作就像一个魅力。

运行Laravel 4 migrations php artisan migrate --pretend时,可以减轻任何恐惧。 这将仅输出在运行实际迁移时已经运行的SQL。

这听起来像你最初的4个迁移已经运行。 我猜想,当你的php artisan migrate它只会运行新的,最近的迁移。

build议的意思:确保你所有的up()和down()工作方式都是你期望的。 我喜欢在运行我的迁移时运行(),向下(),向上(),只是为了testing它们。 如果你有5到6次的迁移,并且意识到你不能毫不费力地回滚,因为你没有把up()与100%的值相匹配。

只是我的两分钱! 希望 – 有帮助。

你可以把更多的文件夹迁移,像这样运行:

 php artisan migrate --path=/app/database/migrations/my_migrations 

重新运行迁移的唯一方法是肮脏的。 您需要打开数据库并删除表示迁移的迁移表中的行。

然后运行php artisan再次迁移。

我在另一篇文章中给出了这个答案,但您可以这样做:运行artisan migrate运行所有迁移,然后使用以下SQL命令更新迁移表,使其看起来像迁移一次运行一个:

 SET @a = 0; UPDATE migrations SET batch = @a:=@a+1; 

这将把批次列更改为1,2,3,4等。如果您只想影响某些迁移,请在此处添加WHERE batch>=...条件(并更新@a的初始值)。

在此之后,您可以进行artisan migrate:rollback尽可能多的artisan migrate:rollback ,然后逐步完成迁移。

如果只是为了testing的目的,这是我如何做到这一点:

对于我的情况,我有几个迁移,其中一个包含应用程序设置。

当我testing应用程序,并不是所有的迁移已经安装,我只是将它们移动到一个新的文件夹“未来”。 这个折叠不会被工匠触及,它只会执行你想要的移植。

肮脏的解决方法,但它的作品…

如果您想运行最新的迁移文件,您可以执行以下操作:

 php artisan migrate 

在添加迁移之前,您还可以恢复为:

 php artisan migrate: rollback 

我有同样的问题。 在第一个迁移文件中复制表格创build代码,如下所示:

  public function up() { Schema::create('posts', function(Blueprint $table){ $table->increments('id'); // Other columns... $table->timestamps(); }); Schema::create('users', function (Blueprint $table) { $table->increments('id'); // Other columns... $table->softDeletes()->nullable(); }); } 

您也可以更改(减less) migrations表中的batch列号;)

然后运行php artisan migrate

您可以为您的terminal的迁移创build一个单独的目录,如下所示:

 mkdir /database/migrations/my_migrations 

然后将要运行的特定迁移移动到该目录并运行以下命令:

 php artisan migrate --path=/database/migrations/my_migrations 

希望这可以帮助!

在迁移中抛出exception,如果您不想应用它,则会停止整个迁移过程。

使用这种方法,您可以将大量迁移分解成多个步骤。

有一个简单的方法,我知道这样做只能在本地主机上使用

  1. 根据需要修改您的迁移文件
  2. 打开你的phpMyAdmin或任何你用来查看你的数据库表
  3. find所需的表,并放下它
  4. find迁移表并打开它
  5. 在迁移字段下的这个表中find你想要的表名并删除它的行
  6. 最后从命令行或terminal运行命令php artisan migrate 。 这只会迁移数据库中的迁移表中不存在的表。

这种方式是完全安全的,不会造成任何错误或问题,而它看起来像不专业的方式,但它仍然完美的作品。

祝你好运

很简单…! 只需转到您的迁移文件夹。 将所有迁移文件移到另一个文件夹。 然后将所有的迁移一个接一个地转移到迁移文件夹中,并为其中一个迁移(php artisan)。 当你将错误的迁移文件插入主迁移文件夹并运行php artisan迁移命令提示符将是错误的。