You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

47 lines
2.8 KiB

15 hours ago
-- ============================================================
-- D-05 可选加固:customer.is_biz_negotiated 补默认值(单事务)
-- 工单:customer-defectfix(e2e-report-v2 §五 D-05 / 任务书缺陷清单)
-- 现象:导入含 INSERT 行 → 任务 FAILED「导入执行异常,请联系管理员」,
-- 失败明细 0 行;根因 = customer.is_biz_negotiated 列
-- tinyint NOT NULL 且无默认值,CustomerImportExecutor.createCustomer()
-- 未赋值 → INSERT 报 Field 'is_biz_negotiated' doesn't have a default value
-- 应用层修复(本 effort 主修复,先于本脚本生效):
-- createCustomer() 已补 setIsBizNegotiated(0) / setIsChild(0)
-- 本脚本(可选加固,【待用户批准后手动执行,本 effort 不执行】):
-- 给该列补 DEFAULT 0,兜底未来任何遗漏写入路径;不改已有数据
-- 风险评估:MODIFY 仅改默认值元数据(类型/NOT NULL 保持原样),
-- InnoDB 即时元数据变更,不重建表、不锁行、毫秒级完成
-- 执行前核对(远程共享库 8.129.84.155,多人共用纪律):
-- 1) SHOW COLUMNS FROM customer LIKE 'is_biz_negotiated';
-- —— 期望与探针基线一致:Type=tinyint(1), Null=NO, Default=NULL
-- 2) SHOW CREATE TABLE customer;
-- —— 若现场 COMMENT 与下方不一致,以现场原文替换后再执行
-- ============================================================
BEGIN;
ALTER TABLE customer
MODIFY COLUMN is_biz_negotiated tinyint NOT NULL DEFAULT 0
COMMENT '是否已商务洽谈(0否 1是;D-05 补默认值)';
COMMIT;
-- ============================================================
-- D-05 同族补充发现(customer-defectfix heavy 复跑实锤):
-- relation_star_level 亦为 NOT NULL 无默认,且导入模板 9 列无该列可填,
-- 任何 INSERT 行必为 null 必炸(round-1 起导入 INSERT 从未真正成功,
-- 先后被 is_biz_negotiated / relation_star_level 挡住)。
-- 应用层已补 setIsBizNegotiated(0) / setRelationStarLevel(0) 占位;
-- 若走库端根治(二选一,待批准后手动执行),建议放开该列 NOT NULL:
-- ============================================================
-- ALTER TABLE customer
-- MODIFY COLUMN relation_star_level tinyint NULL
-- COMMENT '关系星级 1~5(硬编码枚举非字典,D4-rev1);NULL=未评估(导入新建占位)';
-- 说明:手工新增/编辑仍走 validateCommon requireStar 强制 1~5,仅导入路径允许 NULL;
-- 放开后 createCustomer 的 setRelationStarLevel(0) 占位可移除(留 0 不报错,仅语义弱)。
-- 回滚(如需还原 is_biz_negotiated 为无默认值):
-- ALTER TABLE customer
-- MODIFY COLUMN is_biz_negotiated tinyint NOT NULL
-- COMMENT '是否已商务洽谈';