update json字段 内容必须要转义吗?

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】 7.3
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】

UPDATE mt_label_article 
SET content = '{"id": 106, "title": "测试1", "content": "我从小就和旅游结成了伴。每次放假,妈妈都会带我去看在外地工作的爸爸,顺便到那里玩上好些天,所以从小我对旅游的喜爱之情就像松树离不开土地,树枝离不开树叶。\n    八月,炎热的暑假假期,我们全家踏上了去桃花岛的程,\n    桃花岛最好玩的地方就数塔湾金沙了。\n    塔湾金沙是一个海滩溢场。向前望去是无边无际的大海,海上波涛汹涌,声音震耳欲聋,犹如雄狮咆哮,更像千军万与朝我驶来,立马让我精神振益。最美的就是那高低不同的山峰。有的像手牵,有的像骆驼,还有的像善萨。这是我第一次看到真正的大海,心里 提多高兴了!我迫不及待地扶好泳衣,跟着爸爸奔向大海人多的地方,原来他们在赛浪。我们也兴高系烈地加入到了他们赛浓的队任中。跟看一个凶猛的大浪向我扑来,我却还没有想到避开它的方法,突然我灵机一动,心里喊着一、二、三、跳!我用力地逃过了扑面而来的大海,大家都兴奋得笑开了花,片刻这里变成了一个欢乐的海洋。\n    太阳从地平线上消失了,玩了一天的我带着甜密的微笑进入梦乡。我们的帐篷星放着泳装、泳镜和泳圈。明天,只要是晴天,我又将投入到火热的赛浪斗去。", "lyricSen": ["更像千军万与朝我驶来,"], "talkDesc": ["树枝离不开树叶。"], "gradeName": "六年级", "senseDesc": ["海上波涛汹涌,", "声音震耳欲聋,"], "themeName": "记叙文", "actionDesc": ["每次放假,"], "analogySen": ["有的像手牵"], "discussSen": [""], "sceneryDesc": ["向前望去是无边无际的大海,"], "demeanorDesc": ["顺便到那里玩上好些天"], "appearanceDesc": ["炎热的暑假假期,"], "psychologyDesc": ["桃花岛最好玩的地方就数塔湾金沙了"], "anthropomorphicSen": ["这是我第一次看到真正的大海,"]}' 
WHERE
	id = 106;

上面写么写就会报3140错误,对json字段加上如下转义就能正常

UPDATE `mp_user`.`mt_label_article` 
SET `content` = '{\"id\": 106, \"title\": \"测试1\", \"content\": \"我从小就和旅游结成了伴。每次放假,妈妈都会带我去看在外地工作的爸爸,顺便到那里玩上好些天,所以从小我对旅游的喜爱之情就像松树离不开土地,树枝离不开树叶。\\n    八月,炎热的暑假假期,我们全家踏上了去桃花岛的程,\\n    桃花岛最好玩的地方就数塔湾金沙了。\\n    塔湾金沙是一个海滩溢场。向前望去是无边无际的大海,海上波涛汹涌,声音震耳欲聋,犹如雄狮咆哮,更像千军万与朝我驶来,立马让我精神振益。最美的就是那高低不同的山峰。有的像手牵,有的像骆驼,还有的像善萨。这是我第一次看到真正的大海,心里 提多高兴了!我迫不及待地扶好泳衣,跟着爸爸奔向大海人多的地方,原来他们在赛浪。我们也兴高系烈地加入到了他们赛浓的队任中。跟看一个凶猛的大浪向我扑来,我却还没有想到避开它的方法,突然我灵机一动,心里喊着一、二、三、跳!我用力地逃过了扑面而来的大海,大家都兴奋得笑开了花,片刻这里变成了一个欢乐的海洋。\\n    太阳从地平线上消失了,玩了一天的我带着甜密的微笑进入梦乡。我们的帐篷星放着泳装、泳镜和泳圈。明天,只要是晴天,我又将投入到火热的赛浪斗去。\", \"lyricSen\": [\"更像千军万与朝我驶来,\"], \"talkDesc\": [\"树枝离不开树叶。\"], \"gradeName\": \"六年级\", \"senseDesc\": [\"海上波涛汹涌,\", \"声音震耳欲聋,\"], \"themeName\": \"记叙文\", \"actionDesc\": [\"每次放假,\"], \"analogySen\": [\"有的像手牵\"], \"discussSen\": [\"\"], \"sceneryDesc\": [\"向前望去是无边无际的大海,\"], \"demeanorDesc\": [\"顺便到那里玩上好些天\"], \"appearanceDesc\": [\"炎热的暑假假期,\"], \"psychologyDesc\": [\"桃花岛最好玩的地方就数塔湾金沙了\"], \"anthropomorphicSen\": [\"这是我第一次看到真正的大海,\"]}' 
WHERE
	`id` = 106;

这是怎么回事呢?

7.1.1没发现这个问题,


7.3.0上测试了也没复现

我多测了几次,发现json里带有\n就不行,把\n去掉就可以
比如下面content中的\n,就会出错

UPDATE mt_label_article 
SET content = '{"id": 106, "title": "测试1", "content": "我从小就和旅游结成了伴。每\n次放假"}' 
WHERE
	id = 106;

那还是有特殊字符,是得转义,你这样应该就不需要了。。。
UPDATE city a SET a.detail=‘{“name”: “Beijing\n”, “population”: 101}’
WHERE a.id=1;

您看我这么写有毛病吗?
像下面这样,再加个转义符才好使

对,论坛显示问题,就得用两个反斜杠,实际你的json里面是有一个换行的也就是反斜杠n,但是你在json中处理需要再用一个反斜杠来转义一下。

反斜杠要显示出来是要再转义哒,因为它本身是用来转义特殊字符的

1 个赞

字符串带了转义符的要转义

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。