MariaDB 不支持 CAST 到 TEXT(仅 SQLite 支持),导致该语句在 prepare 阶段 直接 1064,activity 分支每次 idle 循环都报错刷屏——且无论 backlog 是否有 数据都会失败(语法错误先于执行)。activities.id 本身是 VARCHAR(64), ai_jobs/ai_insights.subject 是 VARCHAR(96),两侧同类型,CAST 本就不必要。 改为直接比较 ai.subject = a.id / aj.subject = a.id,双后端(SQLite/MariaDB) 语义一致。 已在生产 MariaDB 上只读验证两段 SQL 均正常执行(daily-backlog=0, activity-backlog=0),本地 analysis/ai/coach 测试全绿。