Laravel 8首次执行artisan migrate命令未生成默认users、failed_jobs表问题
问题原因
Laravel 执行php artisan migrate时会优先对比migrations表中的记录,只要对应迁移文件的记录已经存在,就会默认跳过执行,不会重复创建表。出现你描述的情况,大概率是以下几种原因:
- 你此前执行过这两个默认迁移后手动删除了
users、failed_jobs表,但没有同步删除migrations表里对应的两条迁移记录 - 首次执行这两个迁移时遇到了权限不足、表名冲突等异常,异常抛出前迁移记录已经被写入
migrations表,没有触发回滚操作 - 你修改过这两个迁移文件的前缀时间戳,和
migrations表中存储的记录不匹配导致识别异常
修复方案
你可以按以下步骤处理:
- 先执行
php artisan migrate:status查看迁移状态,确认users和failed_jobs对应的迁移条目状态是否为已执行 - 如果是开发环境没有核心业务数据,直接执行
php artisan migrate:fresh,该命令会清空所有数据表并重新执行全部迁移文件,缺失的表会自动生成 - 如果不能清空现有数据,手动删除
migrations表中users、failed_jobs对应的两条记录,再重新执行php artisan migrate即可生成对应表
对项目的影响
- 如果你后续需要使用 Laravel 自带的用户认证、队列失败记录功能,缺失这两个表会直接触发报错,必须补建
- 如果你完全不需要用到这两个默认功能,暂时不会对现有业务产生影响,但建议还是补建,避免后续引入相关依赖功能时出现未知问题
内容的提问来源于stack exchange,提问作者markoz007
相关产品推荐
相关产品推荐

