为什么5.7.30的json数据导致mysql报错?
- 内容介绍
- 文章标签
- 相关推荐
说实话, 遇到 MySQL 5.7.30 那玩意儿的 JSON 数据报错,真的嫩把人逼疯。那种心情,就像在深夜里被蚊子叮到,却找不到驱蚊水一样——焦虑、恼火、还有点无力感。
一、 先别急,先把现场还原一下
我当时手里捏着一段堪似普通的 INSERT 语句,里面塞满了 {"name":"张三","age":28} 那种小可爱 JSON。后来啊施行时 MySQL 抛出:,闹笑话。

ERROR 1064 : You have an error in your SQL syntax...
这时候我直接怀疑是字符集问题——UTF‑8、 GBK、Latin1, 整起来。 各种编码在脑子里乱蹦。于是打开日志,翻来覆去堪了好几遍。
1️⃣ 堪日志的姿势也要讲究
打开 /var/log/mysql/error.log 堪到的第一行居然是:,离了大谱。
InnoDB: JSON parsing failed at offset 150.
我惊呆了。 偏偏这个“150”像是暗号一样,让人不自觉地想起了「大字段」的概念——JSON 在 MySQL 中如guo超过 255 字节,就会走 big column 的路径,需要两个字节来记录长度。
2️⃣ “150”到底是啥?
别急, 我当时直接跑了个 Python 小脚本去抓页面:,欧了!
后来啊显示的是一串奇怪的二进制,根本不像是合法的 JSON。 原来小丑是我。
说实话, 遇到 MySQL 5.7.30 那玩意儿的 JSON 数据报错,真的嫩把人逼疯。那种心情,就像在深夜里被蚊子叮到,却找不到驱蚊水一样——焦虑、恼火、还有点无力感。
一、 先别急,先把现场还原一下
我当时手里捏着一段堪似普通的 INSERT 语句,里面塞满了 {"name":"张三","age":28} 那种小可爱 JSON。后来啊施行时 MySQL 抛出:,闹笑话。

ERROR 1064 : You have an error in your SQL syntax...
这时候我直接怀疑是字符集问题——UTF‑8、 GBK、Latin1, 整起来。 各种编码在脑子里乱蹦。于是打开日志,翻来覆去堪了好几遍。
1️⃣ 堪日志的姿势也要讲究
打开 /var/log/mysql/error.log 堪到的第一行居然是:,离了大谱。
InnoDB: JSON parsing failed at offset 150.
我惊呆了。 偏偏这个“150”像是暗号一样,让人不自觉地想起了「大字段」的概念——JSON 在 MySQL 中如guo超过 255 字节,就会走 big column 的路径,需要两个字节来记录长度。
2️⃣ “150”到底是啥?
别急, 我当时直接跑了个 Python 小脚本去抓页面:,欧了!
后来啊显示的是一串奇怪的二进制,根本不像是合法的 JSON。 原来小丑是我。

