在昆明五华区使用的Windows台式电脑上,如果SQLite应用曾把JSON文本以BLOB存储类型写入,升级后读出不同含义并不奇怪。旧实现会把非JSONB、但按数据库文本编码转成文本后像JSON的BLOB当作文本JSON接受;3.45.0重写JSON例程时曾改变这一兼容行为,3.45.1及以后才明确:在没有其他解释可用时,继续支持旧的文本路径。但恢复兼容不等于消除歧义:同一BLOB可能既是有效JSONB,又在转成文本后是另一个有效JSON值。官方列举的一组字节,作为JSONB是整数456,转成文本后却是整数3456;这是官方格式示例,并非对用户数据库做过的试验。读取路径不同,含义就可能不同。

适用对象是Windows台式电脑上使用SQLite、历史值实际以BLOB类型保存JSON文本的应用。先核对实际SQLite版本、JSON功能与编译配置、列声明和写入来源,不能只看界面显示像文本来就认定原存储类型。
观察时,对已有去敏schema、SQL、日志和数据库副本做只读检查:确认列声明类型、typeof结果、原始字节,以及写入是否来自readfile()或应用绑定。再在可控副本上比较同一行按JSONB解释和按文本解释的结果。若typeof为blob,且字节既是有效JSONB、转文本又是有效JSON,就存在本题歧义;若原值本来就是TEXT,则不属于本问题;若实际版本低于3.45.1或行为不同,应按该版本重新判断。
风险在于直接批量CAST或UPDATE可能把唯一原库按一种解释改写成TEXT,掩盖原始字节来源,并使另一部分值的含义改变。对既有效JSONB又有效文本JSON的BLOB,升级后可能读出456或3456这类不同结果。唯一原库被批量更新后不易回溯,不同机器版本或编译配置不一致还会让表现不一致。
下一步应先备份并保留原始BLOB副本,在副本上核对版本、列类型、字节来源和受影响行;若业务原意就是存文本JSON,新写入应由维护者明确使用TEXT;原本有意使用JSONB的数据不能一刀切转成文本,历史数据须按确认的格式和含义设计迁移,不直接批量CAST更新唯一原库,先小范围验证再安排变更窗口。需要咨询可拨400-877-9605;电脑快修网是信息展示与第三方维修对接平台,该号码只作咨询,实际范围和安排需确认。去敏材料包括schema、SQL、日志、版本与错误信息,不要发送客户数据或未脱敏库文件。