因此,当我运行一个查询,将子查询的结果聚合到包含 JSON 对象的 JSON 数组中时,出现以下错误:The JSON binary value contains invalid data
这适用于 8.0.15,但不适用于 8.0.17 及更高版本。该错误似乎与子查询字段中字符串的长度有关。 1000个字符似乎是突破点。因此,如果您从 jsonString 中删除字符使其少于 1000 个字符,那么它就可以工作。
这是一个示例查询:
SELECT 1
, CONCAT('[', GROUP_CONCAT(DISTINCT JSON_OBJECT('sJsonData', rInt.jsonString) ORDER BY rInt.val DESC),']')
FROM (
(SELECT 1 AS val , '{"html":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed mattis diam ac purus dictum, sed consequat quam dignissim. Mauris sagittis urna ut turpis accumsan sodales. Praesent porttitor felis sagittis metus tristique vulputate. In nec nisl ipsum. Pellentesque sem ipsum, dignissim sit amet dictum ac, iaculis id elit. Fusce eu pellentesque leo. In suscipit felis at ultricies tristique.Suspendisse aliquet ligula quis risus ultricies aliquet. Etiam laoreet augue leo, id malesuada nisi mattis eget. Donec sit amet ultricies orci. Aenean vitae urna vel ligula mollis fringilla. Suspendisse quis auctor nisi, vel scelerisque ligula. Fusce ornare, enim a placerat tempus, sapien erat laoreet purus, ut ornare nulla risus nec dolor. Morbi dictum, odio non lacinia auctor, purus ex vulputate magna, nec dictum tortor turpis non quam. Ut commodo ut erat et sollicitudin. Aenean in scelerisque metus, et laoreet purus. Morbi nec viverra arcu. Nullam sed tempor elit, et molestie sem00000000000000"}' AS jsonString)
) AS rInt
我尝试将字符串转换为utf8mb4
并更改它的排序规则但这并不能解决问题。
我还将在 MySQL 上提交一个错误,因为这似乎没有意义。看起来这个问题也与this bug https://bugs.mysql.com/bug.php?id=95698