Laravel中如何将旧库数据迁移至含新增表及字段的新数据库(Laragon环境)
Laravel + Laragon 环境下旧数据库迁移至新数据库(含新增表/字段)
以下是具体操作步骤:
备份旧数据库
直接用Laragon自带工具或命令行导出:- 图形化方式:打开Laragon面板,点击「Database」→「phpMyAdmin」,选择旧数据库,点击「导出」,选择「SQL」格式保存为
old_db_backup.sql。 - 命令行方式:打开Laragon的Terminal,执行命令:
(Laragon已配置环境变量,无需额外指定mysql路径)mysqldump -u root -p 你的旧数据库名 > old_db_backup.sql
- 图形化方式:打开Laragon面板,点击「Database」→「phpMyAdmin」,选择旧数据库,点击「导出」,选择「SQL」格式保存为
生成新数据库的最新结构
确保Laravel项目的database/migrations目录包含所有新增表、字段的迁移文件,在项目根目录的Terminal执行:php artisan migrate执行完成后,新数据库的表结构会完全匹配最新的迁移定义。
调整备份数据以适配新结构
打开导出的old_db_backup.sql文件,做以下修改:- 删除所有
CREATE TABLE、DROP TABLE IF EXISTS开头的语句,只保留INSERT INTO开头的数据插入语句,避免覆盖新的表结构。 - 针对已新增字段的表:
- 如果新增字段允许为空:无需额外修改,直接保留原有INSERT语句即可。
- 如果新增字段为必填项且有默认值:先在新数据库中给该字段设置默认值,执行SQL:
或者在INSERT语句中手动补上该字段的对应值。ALTER TABLE 目标表名 MODIFY COLUMN 新增字段名 字段类型 DEFAULT 默认值;
- 删除所有
导入处理后的数据到新数据库
- 图形化方式:打开phpMyAdmin,选择新数据库,点击「导入」,选择处理后的
old_db_backup.sql文件执行导入。 - 命令行方式:在Laragon Terminal执行:
mysql -u root -p 你的新数据库名 < 处理后的备份文件名.sql
- 图形化方式:打开phpMyAdmin,选择新数据库,点击「导入」,选择处理后的
数据校验与补全
- 检查现有表的数据是否完整,新增字段的值是否符合预期(比如默认值是否生效)。
- 对于新增的空表,如果需要从旧数据中关联生成数据,可编写自定义脚本或直接执行SQL插入关联数据。
内容的提问来源于stack exchange,提问作者Zulham Hamzah
相关产品推荐
相关产品推荐

