safety-eval-service/docs/db/sync/20260729_数据库差异分析报告.md

5.4 KiB
Raw Blame History

本地库与线上库结构差异分析报告

  • 生成时间2026-07-29
  • 本地库(基准):192.168.20.100:33080 / safety-eval-service60 张表)
  • 线上库(目标):nlb-kd2xz70qhllfet2koj.cn-beijing.nlb.aliyuncsslb.com:33068 / safety-eval-service35 张表)
  • 对比方式MySQL MCP 直连两库,基于 information_schema.COLUMNS 逐表逐字段比对(字段名/类型/长度/可空/默认值)

一、表级差异

1.1 本地有、线上缺失的表26 张)→ 需在线上新建

分类 表名
安评项目20张 eval_customereval_projecteval_risk_analysiseval_risk_participanteval_contracteval_teameval_project_membereval_project_doceval_project_process_waringeval_project_waringeval_surveyeval_survey_attacheval_report_drafteval_internal_revieweval_tech_revieweval_process_controleval_review_itemeval_sign_taskeval_reporteval_report_spotcheck
监督检查2张 insp_noticeinsp_notice_material
机构画像1张 org_profile_score
资质现场核查2张 qual_on_site_reviewqual_on_site_review_file
消息中心1张 safety_message

1.2 线上有、本地没有的表1 张)→ 按规则不删除,仅记录

  • qual_discipline_basic_majors(本地对应表疑为 basic_discipline_major,请人工确认是否为改名迁移)

1.3 两边都存在且结构完全一致的表25 张)

accountbasic_discipline_majorfilestoragegen_tablegen_table_columnindustry_professional_standardsnew_flyway_schema_historyorg_business_scope_device_reforg_departmentorg_personnel_changeorg_qualificationorg_resign_applyqual_filing_change_detailqual_filing_commitmentqual_filing_commitment_changequal_filing_equipmentqual_filing_equipment_changequal_filing_materialqual_filing_material_changequal_filing_reviewqual_filing_personnelqual_filing_personnel_change 等(其中 qual_filing_personnelqual_filing_personnel_change 经逐字段复核确认一致)。

二、共有表的字段差异12 张有差异)

2.1 本地新增字段(线上缺失,需 ADD COLUMN安全

字段 类型 说明
org_position gbs_role_id bigint 关联GBS角色ID
org_position gbs_role_code varchar(64) 关联GBS角色编码
org_position gbs_role_name varchar(100) 关联GBS角色名称
org_personnel_cert cert_level varchar(50) 证书等级
qual_filing_personnel_cert cert_level varchar(50) 证书等级
qual_filing_personnel_cert_change cert_level varchar(128) 证书等级
wps_doc project_id bigint 项目id
wps_doc_version project_id bigint 项目id

2.2 字段类型/长度不一致(线上比本地"宽",改窄有截断风险,脚本中已注释)

字段 线上 本地 风险
org_equipment industry_code varchar(100) varchar(32) 收窄截断
org_info safety_industry_category_code varchar(1024) varchar(32) 收窄截断
org_personnel proof_material_url varchar(5000) varchar(2000) 收窄截断
org_position duty_desc varchar(600) varchar(500) 收窄截断
org_position remarks varchar(600) varchar(255) 收窄截断
qual_filing business_scope varchar(1024) varchar(1000) 收窄截断
qual_filing attachment_url text varchar(500) 收窄截断
qual_filing_change business_scope varchar(1024) varchar(1000) 收窄截断
qual_filing_expert certificate text varchar(500) 收窄截断

2.3 线上独有字段(本地已移除/改名,按规则不删除,仅记录)

线上独有字段 说明
org_equipment instrument_type_code varchar(32) 本地已移除
org_personnel_cert cert_type_name varchar(50) 本地改用 cert_level
qual_filing_personnel_cert cert_type_name varchar(50) 本地改用 cert_level
qual_filing_personnel_cert_change cert_type_name varchar(50) 本地改用 cert_level

三、更新脚本文件(需人工确认后执行)

文件 内容 风险
20260729_prod_update_part1_create_tables.sql 新建 26 张缺失表(CREATE TABLE IF NOT EXISTS,幂等) 无(纯新增)
20260729_prod_update_part2_alter_tables.sql A区 8 个安全新增字段 低(纯新增,勿重复执行)
20260729_prod_update_part2_alter_tables.sql B区 9 个长度收窄 MODIFY已全部注释 截断风险附检查SQL
20260729_prod_update_part2_alter_tables.sql C区 线上独有表/字段记录 不执行任何 DROP

四、执行建议

  1. 先备份线上库:mysqldump --no-data(结构)+ 涉及表的数据备份。
  2. 执行 part1建表幂等可重跑
  3. 执行 part2 A区新增字段只执行一次
  4. B区逐条先跑注释中的检查 SQL确认 COUNT(*)=0 再放开对应 MODIFY任何一条有数据超长则不要执行该条。
  5. C区不执行任何操作qual_discipline_basic_majors 是否废弃请业务侧确认。
  6. 全程未包含任何 DROP TABLE / DROP COLUMN / DELETE 语句。