Laravel删除迁移文件后执行migrate:refresh提示‘Migration not found’求助
解决Laravel迁移文件删除后
migrate:refresh报错的问题 这问题我之前也踩过坑——你删掉了本地的迁移文件,但数据库里的migrations表还存着这两个文件的记录,执行migrate:refresh时Laravel会去查找这些已删除的文件,自然就抛出「Migration not found」的错误了。下面给你两种靠谱的解决办法:
方法一:手动清理数据库记录
- 打开你常用的数据库管理工具(比如phpMyAdmin、Navicat或者命令行客户端)
- 找到
migrations数据表,搜索包含2018_03_30_075929_drop_products_tags_table和2018_03_30_075242_create_products_tags_table的两条记录 - 直接删除这两条记录
- 再次执行
php artisan migrate:refresh,就能正常运行了
方法二:用Artisan命令快速清理
如果你习惯用命令行操作,可以走这个流程:
- 先进入Laravel的Tinker交互环境:
php artisan tinker - 依次执行SQL删除语句,清理目标迁移记录:
DB::table('migrations')->where('migration', '2018_03_30_075929_drop_products_tags_table')->delete(); DB::table('migrations')->where('migration', '2018_03_30_075242_create_products_tags_table')->delete(); - 输入
exit退出Tinker,再运行php artisan migrate:refresh即可
后续注意事项
以后要删除迁移文件时,建议先执行php artisan migrate:rollback回滚该迁移(如果该迁移已经执行过),再删除本地文件;或者删除文件后及时清理migrations表的对应记录,避免再出现这类问题。
内容的提问来源于stack exchange,提问作者Dimitar
相关产品推荐
相关产品推荐

