php - 数据库查询切断了长文本的结尾

标签 php mysql

我有这样的查询:

    $sql = "select qu.id as qu_id, qu.question_id as qu_question_id, qu.question_time as qu_question_time, qu.time as qu_time, qu.useruid as q_useruid, qu.originuid as qu_originuid, concat(concat(' ', GROUP_CONCAT(follow.followeruid SEPARATOR ' ')), ' ') as f_followers, concat(concat(' ', GROUP_CONCAT(feeds.user_id SEPARATOR ' ')), ' ') as f_user_id
            from (select question_updates.id, question_updates.question_id, question_updates.question_time, question_updates.time, questions.originuid, questions.useruid, questions.id as qu_id
                  from question_updates
              join questions
                  on question_updates.question_id = questions.id
                  limit 0, %i) qu
            left join follow
            on follow.useruid = qu.useruid
            left join feeds
            on feeds.question_id = qu_id and (follow.followeruid = feeds.user_id or qu.originuid = feeds.user_id or qu.useruid = feeds.user_id)
            group by qu_id;";
    $elements = App::db()->query($sql, $limit);

这是由 flourishlib 执行的。我的问题是

f_followers

只包含实际结果的一部分。

我已经回应了它的值(value),但结果是:

string(1026) "410187 410187 413087 413087 415151 415151 417290 417290 433722 433722 404603 404603 507657 507657 453264 453264 568415 568415 467570 467570 552061 552061 568842 568842 568842 568842 568842 568842 566207 566207 413241 413241 563720 563720 599200 599200 420944 420944 489667 489667 607203 607203 628892 628892 548470 548470 628001 628001 485418 485418 693679 693679 446736 446736 628922 628922 704588 704588 711213 711213 705814 705814 726077 726077 701705 701705 733424 733424 711319 711319 571667 571667 432333 432333 626145 626145 654618 654618 612619 612619 750817 750817 568955 568955 621153 621153 565888 565888 626355 626355 798923 798923 808107 808107 808107 808107 417740 417740 809480 809480 642222 642222 807336 807336 402777 402777 811486 811486 644565 644565 645200 645200 761810 761810 820679 820679 456459 456459 823283 823283 595438 595438 826692 826692 828011 828011 761635 761635 618987 618987 828800 828800 765090 765090 838269 838269 698528 698528 791219 791219 728155 728155 465008 465008 866256 866256 45"

其中 45 不是实际值,它实际上是 452989 值的一部分。

这会导致一个巨大的错误。我的问题是:返回值集中的文本长度是否有 MySQL/flourishlib 限制?有没有办法告诉 MySQL/flourishlib 不要切断

GROUP_CONCAT(follow.followeruid SEPARATOR ' ')), ' ') as f_followers

值?

编辑:正如答案所示,这个问题与 flourishlib 无关,它是一个数据库设置。

最佳答案

您违反了 GROUP_CONCAT() 的默认长度限制,它仅为 1024 个字符。 The group_concat_max_len system variable可供您提高限额。确定适合您的应用程序需求的合理最大值,并为当前 session 设置变量。

SET SESSION group_concat_max_len = 65536

无需修改您的代码。

关于php - 数据库查询切断了长文本的结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27023938/

相关文章:

php - 使用 mysql 和 mysqli

php - 遍历每个元素

PHP 域可用性脚本 exec() 函数替代

mysql - DATE_FORMAT MYSQL 没有按应有的方式格式化

mysql - 为什么这个正则表达式查询没有返回任何结果?

Mysql触发器涉及多表更新表

php - 在 Laravel 5.3 中从外键填充下拉列表的正确方法

php - 使用 Mailgun 在 Laravel 5.4 中发送邮件得到错误代码 "401 UNAUTHORIZED` 响应 : Forbidden "

mysql - 修改我的查询

php - 记住我的代码在我的脚本 php 中不起作用