如何在删除表后重新迁移Laravel迁移?

26

我在 MySQL 手动删除表后,运行以下命令:

php artisan migrate

我得到了这个:

Nothing to migrate.

只有第一次有效,如何在laravel中重新运行迁移?


你的 Laravel 版本是什么? - Davit Zeynalyan
@Davit 最后一个 - Skrudox
迁移的概念总是前进而不会后退。当您说某个数据库中的表被手动删除时,这意味着应该以创建它的方式来解决此问题。不要创建新的迁移并运行它(以及处理此操作涉及的所有问题),而是根据迁移创建表规格手动创建表。 - Mauricio Rodrigues
6个回答

29

Laravel会记录已运行的迁移。你需要进入迁移表并删除迁移记录。这样,Laravel就可以知道哪些迁移已经运行过,以便它不会再次运行它们,并且在回滚的情况下,它知道最后一批完成的迁移。

这可能会有所帮助:https://laravel.com/docs/5.6/migrations


16

尝试以下命令:composer dump-autoloadphp artisan config:cache

如果这些命令不起作用,还可以尝试使用php artisan migrate:refresh

或者在数据库中删除 Migration 表格。


8
您可以简单地执行以下命令:php artisan migrate:fresh 来重新运行您的迁移,如果您有种子数据,则只需执行:php artisan migrate:fresh --seed

4
如果您手动删除了一张表,也必须从 "migration" 表中删除记录。这样当 artisan migrate 检查到您的迁移不在 "migration" 表中时,将会迁移未注册的迁移。

4

如果您手动删除一个表,那么这是预期的行为,因为之前的批量迁移作业已经被部署(在表中)。

  • 如果您想重新迁移整个数据库,只需执行:php artisan migrate:refresh

  • 如果您想确保您的数据库与最新更改保持清洁,您可以删除整个数据库表并再次执行php artisan migrate。此外,如果您有任何种子数据,请尝试php artisan migrate --seed


1
使用 php artisan migrate:refresh --seed 命令可以一次性删除所有表并重新执行迁移和填充。 - Dave Carruthers

1
您可以做的最好的事情是从数据库中删除表,然后重命名迁移的最后一个数字并执行。
php artisan migrate

这并不会重新创建所有的表格。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接