如何在 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 中运行特定迁移 [重复]的主要内容,如果未能解决你的问题,请参考以下文章