如何在 laravel 中运行特定迁移 [重复]

Posted

技术标签:

【中文标题】如何在 laravel 中运行特定迁移 [重复]【英文标题】:How can I run specific migration in laravel [duplicate] 【发布时间】:2018-04-19 11:57:06 【问题描述】:

我在地址表迁移上创建,但一个迁移已经在数据库中,它给出以下错误:

基表或视图已存在:1050 表“通知”已存在

那么,我可以运行特定的迁移吗?如何在 Laravel 中运行?

【问题讨论】:

在你的情况下,我会删除架构/数据库并重新创建它。 可以请一个模组删除欺骗警告吗? Laravel 4.x 的答案太过时了,无法考虑回答这个问题。 @社区 完全正确 - 我想发布一个答案,但它是 Laravel 5 特有的,而“重复”问题明确指出了 Laravel 4。 评论以获得对新手的更好帮助:访问本教程以获得更好的理解:scratchcode.io/laravel-run-specific-migration 【参考方案1】:

TLDR;

“书本”:

如果已经有迁移的表并且这些表中存储了一些数据,请注意php artisan migrate:refresh。您将丢失所有数据!

对于这个特定的问题,OP 已经运行了迁移,如果他想再次运行相同的迁移,那么首先他应该使用php artisan migrate:rollback 回滚。这将撤消上次迁移。

然后你可以运行php artisan migrate,所有未迁移的迁移都会被迁移。


如果您创建了更多迁移但它们尚未迁移,请仅运行特定迁移,请使用以下命令:

php artisan migrate --path=/database/migrations/full_migration_file_name_migration.php

有时,如果出现问题并且您在迁移时遇到错误,说该表已经存在,您可以手动从 migrations 和导致数据库中出现问题的表中删除该特定条目并运行 php artisan:migrate重新创建表。

【讨论】:

path 中添加.php 扩展,例如php artisan migrate --path=/database/migrations/my_migrations.php 向我显示Nothing to migrate.。为什么?迁移是否需要已经在迁移表上?我也试过一个已经在那里的,它给出了同样的结果。此路径是我的文件的完整路径还是相对于我的应用程序的根目录?编辑:也尝试了完整路径,它说的是同样的事情。 指定--path=path/to/specific_migration对我不起作用,我不得不采取另一种策略,将特定文件移动到子文件夹中,然后运行--path=path/to/subfolder,这是一个很大的缺点。但请注意:migrate:reset 将忽略 --path ! 显示“没有要迁移的东西”。 不要只使用migrate 使用migrate:refresh,这样就可以了。例如,它将是php artisan migrate:refresh --path=/database/migrations/my_migrations.php

以上是关于如何在 laravel 中运行特定迁移 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

再次迁移特定表 laravel

如何为 laravel 迁移指定文件夹?

在 laravel 中迁移特定表

Laravel 迁移:删除特定表

特定表迁移laravel中的错误

Laravel迁移不完整[重复]