mysql gorm 报错 Scan error on column index 0, name "SUM(file_size)": converting NULL to int64 is unsupported
根本原因 :表中的 file_size 列可能包含 NULL 值(例如,对于未设置文件大小的记录)。
SUM() 函数将 NULL 视为忽略(因此它仅对非 NULL 值求和),但如果所有相关 file_size 值均为 NULL, 则 SUM(file_size) 的结果将为 NULL。
Go 尝试将此 NULL 结果映射到该上下文中不支持可空性的 int64 类型。这会触发“不支持将 NULL 转换为 int64”异常。
解决
若要正常处理 NULL,修改 SELECT 子句以使用 COALESCE,当总和为 NULL 时,COALESCE 返回默认值(例如 0)。这确保了结果始终是有效的整数。
SELECT COALESCE(SUM(file_size), 0) FROM `table_name`
为什么有效 :
- SUM(file_size):计算总和,如果不存在非空值,则为 NULL。
- COALESCE(..., 0):对于 NULL, 回退到 0,产生一个与 int64 兼容的整数。

浙公网安备 33010602011771号