83 lines
5.4 KiB
Markdown
83 lines
5.4 KiB
Markdown
|
|
# 本地库与线上库结构差异分析报告
|
|||
|
|
|
|||
|
|
- 生成时间: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` 语句。
|