目录
- 场景描述
- 方案一:Navicat 数据传输(全自动克隆)
- 方案二:SQL 转储与导入(离线异地同步)
- 方案三:框架内置初始化脚本(纯净环境)
- 💡 避坑与进阶指南
- 1. 字符集陷阱
- 2. “定义者 (Definer)” 权限报错
- 3. 环境变量同步
- 总结
场景描述
作为实习生入职后,第一步通常是拉取代码。但代码只是“骨架”,数据库才是“灵魂”。为了实现以下目标,我们需要在本地搭建一套私有的数据库环境:
- 数据隔离:防止在公共库乱删改数据被同事“毒打”。
- 性能响应:本地库连接速度快,Debug 体验更佳。
- 断网开发:不受公司内网/VPN 限制。
方案一:Navicat 数据传输(全自动克隆)
这是最简单、最不容易出错的方法。它可以直接把远程库里的表结构、索引、数据一键克隆到你本地。
- 准备工作:在 Navicat 的“本地连接”(localhost)里,先新建一个空的数据库(比如叫 drone_local),字符集选 utf8mb4。
- 开始传输:点击 Navicat 顶部菜单栏的 “工具” (Tools) -> “数据传输” (Data Transfer)。
- 配置:
- 源 (Source):选择同事给你的那个远程连接(192.168.0.103)和对应的数据库。
- 目标 (Target):选择你的“本地连接”(localhost)和刚才建的空库 drone_local。
- 开始:点击“开始”,你会看到进度条在飞速跳动,完成后,本地库就和远程库一模一样了。
方案二:SQL 转储与导入(离线异地同步)
适用于网络不通或需要备份的场景。
- 应用前提:
- 无法直接连接远程库(如报错
10060 Timeout)。 - 需要同事协助提供
.sql文件。
- 无法直接连接远程库(如报错
- 操作要点:
- 导出:在源库选择“转储 SQL 文件” -> “结构和数据”。
- 导入:在本地空库选择“运行 SQL 文件”。
- 优点:不依赖实时网络,文件可多次重复使用,是团队协作最稳妥的方式。
方案三:框架内置初始化脚本(纯净环境)
适用于想要从零开始,或远程库数据极其混乱的情况。
- 应用前提:
- 项目代码仓库中包含
sql文件夹)。
- 项目代码仓库中包含
- 操作要点:
- 按依赖顺序手动执行 SQL 脚本(先跑系统表,再跑业务表)。
- 优点:环境最纯净,无垃圾测试数据,方便理解项目的初始表结构。
💡 避坑与进阶指南
1. 字符集陷阱
- 规范:本地建库时必须选择
utf8mb4字符集。 - 原因:现代项目(如无人机或工单系统)经常存入 Emoji 或特殊编码,普通
utf8会导致数据插入失败。
2. “定义者 (Definer)” 权限报错
- 技巧:导入 SQL 时若报“Access Denied”,建议在导入选项中取消勾选“包含定义者”。
- 原因:远程库的触发器/视图可能绑定了特定账号,本地环境无此账号会触发权限异常。
3. 环境变量同步
- 必做:数据库同步完成后,第一时间修改
application-local.yaml中的url、username和password。 - 验证:后端 Console 能够正常打印 SQL 且不报错,才算真正“跑通”。
总结
能连通时选“数据传输”,连不通时选“SQL 离线导入”。作为开发者,掌握多种数据搬运方式,是保证开发环境快速就绪的基本功。