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 兼容的整数。
posted @ 2025-10-30 09:45  牛奔  阅读(5)  评论(0)    收藏  举报