首页 > 解决方案 > 从 MySQL 运行 SELECT 时 JSON 长度的最大限制是多少

问题描述

我有一个 8 列和 62,000 多行的表。我希望 MySQL 通过我执行的 select 语句将其表定义转换为 JSON:

SELECT
    CONCAT(
        '[',
        GROUP_CONCAT(
            JSON_OBJECT(
                'json_column_name', tbl.actual_column_name,
                ...
            )
        ),
        ']'
    )
FROM
    table_name tbl;

但是,一旦 JSON 到达表中的第 4 行,它就会被剪切,即使LIMIT 2声明为测试(我不明白,因为我仅限于前 2 行)。我已经将我的容量增加到max_allowed_packets1GB,但 JSON 仍然被削减。

标签: mysqljsonaggregategroup-concat

解决方案


JSON 文档的限制由 MySQL 协议的 max_allowed_pa​​cket 限制设置为大约 1GB。您可以在尝试写入服务器之前使用 JSON_STORAGE_SIZE 函数来测试您尝试放入列中的内容是否超过该大小。

如果是,您可以将其拆分为多列 1GB 组件。


推荐阅读