编辑 | blame | 历史 | 原始文档

数据库初始化与配置导出维护规则

规则

  • 全库初始化只用**一份合并脚本**:docs/sql/config_export_all_<日期>.sql(建结构 + 补配置 + 补身份一次性完成)。
  • 任何业务/配置表结构、配置数据、系统身份/权限数据有变更,都只重新生成这一份文件,保证其始终是最新可一键执行的版本。
  • 只维护合并文件;config_export_<日期>.sql、test_identity_seed_<日期>.sql 只是生成它的中间体,不再单独提交维护。
  • 违反视为遗漏:新库初始化出来缺表 / 缺菜单 / 登不上,属于未按本规则同步。

数据库环境

库 角色 说明
ruoyi-vue-pro 源库 / 运行库 / 权威 dev/test/jhhg/yzfx 等配置指向它;运行后端(48080)读取;系统身份 / 权限 / 菜单的权威数据源。生成合并脚本时的数据来源。
test(或其它空库) 初始化目标 本地 application-local 等指向的空白库;执行合并脚本在此建结构 + 补配置 + 补身份。
其他 拷贝 与源库同结构同名拷贝,不参与本工作流。

生成/执行合并脚本需在**同时存在 ruoyi-vue-pro 与目标库的同一 MySQL 实例**上执行(阶段二用跨库 INSERT..SELECT)。库名含 - 时 SQL 里要加反引号(如 `ruoyi-vue-pro`)。

唯一维护文件

docs/sql/config_export_all_20260904.sql(11249 行,合并版),内部两个阶段:

阶段 内容 数据来源
阶段一(原 config_export) 全库 413 张表 CREATE TABLE + 6 类配置数据:①协同审批流程(act_*/bpm 激活流程元数据+定义)②协同业务配置(bpm 附件/分类/表单/用户组/监听/表达式)③BI 大屏/go-view ④MES 编码规则 ⑤系统配置主数据(system_dict_type/data、tenant、company_config)⑥AI/基础设施配置。**刻意排除身份(users)/菜单/日志/流水**。 ruoyi-vue-pro 字面量导出(自包含)
阶段二(原 test_identity_seed,已扩展为完整身份/权限) 补导全部有效身份 + 菜单 + 权限:①system_menu 全部有效菜单 ②system_dept/post(仅 deleted=0)③system_role 全部有效角色(含 super_admin)④system_users 全部未删除账号(含 admin)⑤system_user_role(按已拷贝用户交集)⑥system_role_menu(按已拷贝用户所属角色交集,普通角色登录依赖)⑦system_oauth2_client。幂等:先 DELETE 再 INSERT。 ruoyi-vue-pro 跨库 INSERT..SELECT

日常初始化:只需在目标空库执行 config_export_all_20260904.sql 这一份。

各变更归属阶段(先判断"该放哪段")

数据类别 放进合并文件的哪个阶段
新业务表结构(全库任意 CREATE TABLE) 阶段一(结构)
新增/改动的配置类数据(字典、BPM 表单/流程、编码规则、BI、AI、公司配置等) 阶段一(数据)
菜单 / 部门 / 岗位 / 角色 / 用户 / 用户角色 / OAuth2 客户端 阶段二(不进阶段一)
业务主数据 / 单据 / 流水(物料、工单、检验单等运行数据) 都不进(仅建空结构);业务数据由各自迁移脚本负责

维护清单(有变更时按序执行)

  1. 判断变更属于"表结构 / 配置数据"还是"身份 / 权限",确定它应落在阶段一还是阶段二。
  2. 重新生成合并文件 config_export_all_<日期>.sql(用当天日期命名新版本,旧版保留备查):
  • 阶段一:从 ruoyi-vue-pro 导出全库结构 + 6 类配置数据。
  • 阶段二:更新身份/菜单/OAuth2 补导段(如加新菜单、新默认角色)。
  • 将两段内容按「阶段一 → 分隔注释阶段二 → 阶段二」拼接成一份完整文件。
  1. 全库结构变化后,核对 Mapper/DO 是否与表结构一致(mvn compile -q 不受表结构影响,但需人工核对)。

关键约束与坑(避免踩)

  • ⚠ 阶段一含**全库 DROP TABLE IF EXISTS**,会清空非其建表的所有表数据,**只能在全新/可覆盖空库执行**,禁止在运行库直接跑。
  • ⚠ 超管 super_admin 登录后由代码**直接返回全部菜单**;普通角色登录则依赖 system_role_menu。阶段二现按已拷贝用户所属角色补导 system_role_menu,普通角色亦可正常登录。
  • ⚠ 登录/刷新令牌**必须**有 system_oauth2_client 中 client_id='default' 的记录,否则 validOAuthClientFromCache 报错登不上。
  • 字典 system_dict_type/system_dict_data 由阶段一导入,阶段二不重复处理。
  • 源库 system_dept/system_post 含较多软删除行,阶段二仅拷贝 deleted=0 的有效行。
  • 阶段一自包含(字面量 INSERT),不依赖源库在线;阶段二依赖源库在线做跨库拷贝。