fix: 修复数值字段转换失败

This commit is contained in:
2026-05-18 17:16:33 +08:00
parent 9e796a8968
commit c96c6c806b
2 changed files with 173 additions and 36 deletions
+4 -3
View File
@@ -1,9 +1,10 @@
# 项目上下文记录
## 2026-05-18:增强 SQL 脚本执行兼容性
## 2026-05-18:修复数值字段转换失败
- `app/processor.py` 在执行 `ReportScript.sql` 前会为当前数据库 session 临时关闭 `STRICT_TRANS_TABLES`、`STRICT_ALL_TABLES`、`NO_ZERO_DATE` 和 `NO_ZERO_IN_DATE`,兼容脚本中先按字符串导入、再通过 `ALTER TABLE ... MODIFY` 转数值的历史流程。
- SQL 脚本执行时会记录 `lower_case_table_names`,用于排查 MySQL 表名大小写模式;该配置不能在 session 内修改,当前处理仍依赖统一表名引用。
- `app/processor.py` 会从 `ReportScript.sql` 的 `ALTER TABLE ... MODIFY COLUMN ... float/int` 自动补全缺失的字段类型提示,配置中未标 `Type` 的数值字段在导入阶段也会按数值清洗和落库。
- 数值清洗只处理格式问题:空值保留为 NULL 后由脚本 `IFNULL` 归零,千分位逗号、中文逗号、百分号、空格和制表符会被移除,正常数值保持不变,正常 0 不再被误判为空值。
- 执行 SQL 脚本时仍保留 MySQL 严格模式;在 `ALTER` 转数值前会对目标表的相关数值列做一次保险清洗,兼容已经导入过的旧字符串表。
- SQL 语句执行失败后不再继续执行后续语句,避免前置 ALTER 失败后继续产生大量 `Unknown column` 和临时表不存在的级联错误,并让任务正确进入失败状态。
## 2026-05-18:修正历史详情日志滚动条颜色