You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MariaDB中如何从JSON字段取值更新其他字段?

解决MariaDB更新JSON字段时的"Unexpected end of JSON text"错误

问题原因

能正常查询但更新报错,核心原因是表中存在格式无效的JSON数据。查询时可能只访问了合法的JSON行,但UPDATE语句会遍历所有符合WHERE条件的行,其中部分行的json_data字段是不完整/格式错误的JSON(比如截断、引号不匹配、缺少闭合括号等),导致JSON_EXTRACT解析失败。

解决步骤

  1. 定位无效JSON行
    用JSON_VALID函数筛选出所有格式错误的JSON数据:
SELECT * FROM table WHERE JSON_VALID(json_data) = 0;

找到这些行后,手动修复JSON内容,或者根据业务需求删除/标记这些异常行。

  1. 修改UPDATE语句,过滤无效JSON
    在更新前先判断JSON合法性,避免解析错误:
UPDATE table
SET status = json_data->>'$.previous_status'
WHERE JSON_VALID(json_data) = 1
  AND json_data->>'$.previous_status' IS NOT NULL;

这里用->>操作符替代JSON_UNQUOTE(JSON_EXTRACT()),语法更简洁,功能完全等价。

  1. 可选:将字段类型改为JSON
    如果你的json_data字段是VARCHAR/TEXT类型,建议转换为JSON类型,MariaDB会自动校验数据合法性,同时提升JSON操作的性能:
-- 注意:执行前请备份数据,转换失败说明存在无效JSON,需先修复
ALTER TABLE table MODIFY COLUMN json_data JSON;

内容的提问来源于stack exchange,提问作者Jason Stockton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 20:24:30