运行php artisan migrate:refresh提示迁移不存在 如何删除对应迁移记录?
问题原因
迁移系统依靠数据库中的migrations表记录所有已执行过的迁移文件,你提前手动删除了2018_06_30_113500_create_comments_table对应的迁移文件,但数据库的migrations表中还保留了这条执行记录,回滚时找不到对应文件就会抛出错误。
解决方法
方法1:直接操作数据库删除
- 连接项目对应的数据库,找到
migrations数据表 - 筛选
migration字段值为2018_06_30_113500_create_comments_table的记录,直接删除即可
方法2:通过Artisan Tinker命令删除
无需手动登录数据库,在项目根目录依次执行以下操作:
- 启动Tinker交互环境:
php artisan tinker
- 执行删除记录的语句:
DB::table('migrations')->where('migration', '2018_06_30_113500_create_comments_table')->delete();
- 执行成功后输入
exit退出Tinker即可
操作完成后再运行php artisan migrate:refresh就不会再触发该报错。如果你的数据库中还残留了comments表,不需要的话可以同步删除,避免后续新增同名迁移时出现表已存在的错误。
内容的提问来源于stack exchange,提问作者Maik Lowrey
相关产品推荐
相关产品推荐

