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

83 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 本地库与线上库结构差异分析报告
- 生成时间2026-07-29
- 本地库(基准):`192.168.20.100:33080` / `safety-eval-service`60 张表)
- 线上库(目标):`nlb-kd2xz70qhllfet2koj.cn-beijing.nlb.aliyuncsslb.com:33068` / `safety-eval-service`35 张表)
- 对比方式MySQL MCP 直连两库,基于 `information_schema.COLUMNS` 逐表逐字段比对(字段名/类型/长度/可空/默认值)
## 一、表级差异
### 1.1 本地有、线上缺失的表26 张)→ 需在线上新建
| 分类 | 表名 |
|---|---|
| 安评项目20张 | `eval_customer`、`eval_project`、`eval_risk_analysis`、`eval_risk_participant`、`eval_contract`、`eval_team`、`eval_project_member`、`eval_project_doc`、`eval_project_process_waring`、`eval_project_waring`、`eval_survey`、`eval_survey_attach`、`eval_report_draft`、`eval_internal_review`、`eval_tech_review`、`eval_process_control`、`eval_review_item`、`eval_sign_task`、`eval_report`、`eval_report_spotcheck` |
| 监督检查2张 | `insp_notice`、`insp_notice_material` |
| 机构画像1张 | `org_profile_score` |
| 资质现场核查2张 | `qual_on_site_review`、`qual_on_site_review_file` |
| 消息中心1张 | `safety_message` |
### 1.2 线上有、本地没有的表1 张)→ 按规则不删除,仅记录
- `qual_discipline_basic_majors`(本地对应表疑为 `basic_discipline_major`,请人工确认是否为改名迁移)
### 1.3 两边都存在且结构完全一致的表25 张)
`account`、`basic_discipline_major`、`filestorage`、`gen_table`、`gen_table_column`、`industry_professional_standards`、`new_flyway_schema_history`、`org_business_scope_device_ref`、`org_department`、`org_personnel_change`、`org_qualification`、`org_resign_apply`、`qual_filing_change_detail`、`qual_filing_commitment`、`qual_filing_commitment_change`、`qual_filing_equipment`、`qual_filing_equipment_change`、`qual_filing_material`、`qual_filing_material_change`、`qual_filing_review`、`qual_filing_personnel`、`qual_filing_personnel_change` 等(其中 `qual_filing_personnel`、`qual_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` 语句。