Files
ccdi/docs/reports/implementation/2026-04-28-production-init-sql-implementation.md
2026-04-28 17:27:24 +08:00

3.3 KiB
Raw Blame History

生产上线初始化 SQL 生成实施记录

保存路径确认

  • 生产初始化 SQLsql/ccdi_prod_init_20260428.sql
  • 实施记录:docs/reports/implementation/2026-04-28-production-init-sql-implementation.md

修改内容

  • 新增 sql/ccdi_prod_init_20260428.sql,用于生产空库初始化。
  • SQL 内容包含当前 ccdi 库最终态的 57 张表结构。
  • SQL 必要数据范围:
    • 若依基础配置、部门、岗位、用户、角色、菜单、角色菜单、字典、定时任务、公告。
    • CCDI 默认模型参数,仅包含 ccdi_model_param.project_id = 0 的系统默认参数。
    • 流水打标规则 ccdi_bank_tag_rule
  • SQL 不包含运行期业务数据:
    • 项目、员工、流水、导入记录、风险结果、采购事项、实体库、中介库、操作日志、登录日志等数据均保持空表。
  • 将导出结构中的非规范排序规则统一修正为 utf8mb4_general_ci,未保留 utf8mb4_0900_ai_ci
  • 针对生产执行时报错 Specified key was too long; max key length is 767 bytes,按生产要求删除旧库 767 bytes 限制下会超长的索引定义,保留字段长度、表结构和必要初始化数据不变。
  • 删除的超长索引范围:
    • Quartz 表中的长字符复合主键和依赖这些长字符复合键的外键索引。
    • ccdi_account_info.idx_ccdi_account_info_account_no
    • ccdi_asset_info.idx_family_person
    • ccdi_bank_statement.uk_bank_statement_dedup
    • ccdi_bank_statement.idx_batch_id_account
    • ccdi_bank_statement.c4c_bank_statement_stg_batch_id_IDX
    • ccdi_bank_statement_tag_result.uk_ccdi_bank_tag_object_hit
    • ccdi_enterprise_base_info.idx_enterprise_name
    • ccdi_evidence.idx_ccdi_evidence_source
    • ccdi_model_param.uk_project_model_param
    • ccdi_project.idx_project_name

验证情况

  • 使用本机临时 MySQL 实例导入 sql/ccdi_prod_init_20260428.sql 验证通过。
  • 导入后验证结果:
    • 表数量57。
    • utf8mb4_general_ci 表数量0。
    • 基础数据行数:
      • sys_config8。
      • sys_dept10。
      • sys_dict_type26。
      • sys_dict_data98。
      • sys_menu166。
      • sys_role2。
      • sys_role_menu134。
      • sys_user3。
      • sys_job3。
      • sys_notice2。
      • ccdi_bank_tag_rule35。
      • ccdi_model_param17且全部为 project_id = 0
    • 业务数据抽查为空:
      • ccdi_project0。
      • ccdi_base_staff0。
      • ccdi_bank_statement0。
      • ccdi_file_upload_record0。
      • ccdi_purchase_transaction0。
  • 测试完成后已关闭本机临时 MySQL 实例。
  • 生产索引长度修复后,再次计算脚本内所有剩余索引长度,确认超过 767 bytes 的索引数量为 0。
  • 删除超长索引后,再次使用本机临时 MySQL 实例导入验证通过:
    • 表数量57。
    • utf8mb4_general_ci 表数量0。
    • ccdi_model_param17。
    • ccdi_bank_tag_rule35。
    • sys_menu166。
    • ccdi_project0。
    • ccdi_bank_statement0。

执行说明

  • 目标生产库需为空库。
  • 目标库字符集和排序规则建议使用:
CREATE DATABASE ccdi DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  • 导入时需使用 utf8mb4 会话字符集。