运行一个特定的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,如果您不想应用它,则会停止整个迁移过程。
使用这种方法,您可以将大量迁移分解成多个步骤。
有一个简单的方法,我知道这样做只能在本地主机上使用
- 根据需要修改您的迁移文件
- 打开你的phpMyAdmin或任何你用来查看你的数据库表
- find所需的表,并放下它
- find迁移表并打开它
- 在迁移字段下的这个表中find你想要的表名并删除它的行
- 最后从命令行或terminal运行命令
php artisan migrate
。 这只会迁移数据库中的迁移表中不存在的表。
这种方式是完全安全的,不会造成任何错误或问题,而它看起来像不专业的方式,但它仍然完美的作品。
祝你好运
很简单…! 只需转到您的迁移文件夹。 将所有迁移文件移到另一个文件夹。 然后将所有的迁移一个接一个地转移到迁移文件夹中,并为其中一个迁移(php artisan)。 当你将错误的迁移文件插入主迁移文件夹并运行php artisan迁移命令提示符将是错误的。