如何为数据库新增表且不丢失原有数据?替代php artisan migrate的命令是什么
Laravel 新增表迁移操作说明
你不需要替换 php artisan migrate 命令,它本身就符合「新增表、保留旧表数据」的需求:
Laravel 会通过数据库内的 migrations 表记录所有已经执行过的迁移脚本,默认仅执行还未运行过的新迁移:
- 先按照规范创建新表对应的迁移文件,确保迁移文件内的逻辑仅包含创建新表的操作,没有写入修改、删除旧表或旧表数据的代码
- 执行迁移前可先运行
php artisan migrate --pretend预览本次要执行的SQL语句,确认所有操作仅涉及新增新表,无误后再执行正式操作 - 直接运行
php artisan migrate即可完成新表创建,原有旧表的全部数据会完整保留
注意事项
如果担心误操作改动旧表,可提前做好两项校验:
- 确认新迁移文件的文件名前缀时间戳晚于所有旧迁移文件的时间戳,Laravel会按时间戳顺序执行迁移,仅会执行时间戳大于
migrations表中已记录最大时间戳的迁移文件 - 如果你只需要执行当前单个新迁移,可以暂时把其他未执行的迁移文件移出
database/migrations目录,执行完迁移后再移回即可
内容的提问来源于stack exchange,提问作者imane
相关产品推荐
相关产品推荐

