MySQL 查询的 JSON 输出在超过 1026 字节时不显示数据

Posted

技术标签:

【中文标题】MySQL 查询的 JSON 输出在超过 1026 字节时不显示数据【英文标题】:JSON output of a MySQL query is not displaying data when it is over 1026 bytes 【发布时间】:2016-02-03 05:47:12 【问题描述】:

我正在使用以下查询来获取 JSON 格式的数据:

     SELECT 
          CONCAT("[",
              GROUP_CONCAT(
                 CONCAT("""latitude"":""",Latitude,""""),
                 CONCAT(",""londitude"":""",Longitude),"""") 
          ,"]") AS json 
     FROM hq6k2_devicedata_861001000468427  
     where ReceiveTime between '2014-08-31 14:34:19' and '2014-08-31 14:40:36';

我观察到,当返回输出大小低于 ~1026 字节时,此查询完美运行。但是当它超出该范围时,输出如下:

[
    
        "latitude": "2344.152860N",
        "londitude": "09024.699120E"
    ,
    
        "latitude": "2344.152860N",
        "londitude": "09024.699120E"
    ,
//Other data and finally the last one :
    
        "latitude": "234] //Closing the JSON with incomplete data 

我是否遗漏了什么或者这种查询有任何大小限制?

【问题讨论】:

这是你的答案:***.com/questions/5036605/… 不,我还没有在编程中尝试过。是的,我直接在终端运行此查询。我在后端使用 java,我知道如何在 java 中制作 json 数据。没有问题。我担心的是,我尝试从终端中的直接 mysql 查询生成 json 数据有什么问题 查看我链接的那个帖子,它解释了完全相同的问题及其解决方案 【参考方案1】:

GROUP_CONCAT() 在 MySQL 查询中将多行转换为单个字符串。但是,此函数的结果最大长度为 1024 个字符。

您可以更改参数 group_concat_max_len 以增加此限制:

SET SESSION group_concat_max_len = 1000000;

以上设置为SESSION

SET GLOBAL group_concat_max_len = 1000000;

以上设置为 GLOBAL

请查看以下链接了解更多详情: http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat

【讨论】:

很好,解决了您的问题。 @Nazar-E-Bukhari :)

以上是关于MySQL 查询的 JSON 输出在超过 1026 字节时不显示数据的主要内容,如果未能解决你的问题,请参考以下文章

九度-题目1026:又一版 A+B

将 AWS MySQL 查询的 JSON 输出并在网页上显示为 DataTable

如何在node.js中将mysql查询的结果输出为json文件

P1026 统计单词个数

P1026 统计单词个数

MySQL 错误:超过锁定等待超时;尝试重新启动事务查询