Mysql 错误行 xxxx 被 GROUP_CONCAT() 剪切

标签 mysql

我有这样的查询:

INSERT INTO products_analysis_cache (products_id, group_styles, group_finishing, group_elements, group_materials, group_watchlist)
  SELECT p.products_id,
    CONCAT(',', GROUP_CONCAT(shp.styles_id), ',') AS group_styles,
    group_finishing,
    group_elements,
    group_materials,
    group_watchlist
  FROM products p
    LEFT JOIN styles_has_products shp ON shp.products_id = p.products_id
    LEFT JOIN (
                SELECT pue.products_id, CONCAT(',', GROUP_CONCAT(pue.elements_id),',',IFNULL(GROUP_CONCAT(paue.elements_id),0), ',') AS group_elements
                FROM products_use_elements pue
                  LEFT JOIN products_articles_use_elements paue ON paue.products_use_elements_id=pue.products_use_elements_id
                GROUP BY pue.products_id
              ) subquery_1 ON subquery_1.products_id = p.products_id
    LEFT JOIN (
                SELECT ptpm.products_id, CONCAT(',', GROUP_CONCAT(ptpm.products_materials_id), ',') AS group_materials
                FROM products_to_products_materials ptpm
                GROUP BY ptpm.products_id
              ) subquery_2 ON subquery_2.products_id = p.products_id
    LEFT JOIN (
                SELECT muwp.products_id, CONCAT(',', GROUP_CONCAT(muwp.user_id), ',') AS group_watchlist
                FROM minierp_users_watch_products muwp
                GROUP BY muwp.products_id
              ) subquery_3 ON subquery_3.products_id = p.products_id
    LEFT JOIN (
                SELECT products_id, fg+fh+fb+fo+fr AS group_finishing FROM
                  (SELECT p.products_id
                     ,IF(SUM(finishing_goldplate)>0,1,0) fg
                     ,IF(SUM(finishing_hammer)>0,11,0) fh
                     ,IF(SUM(finishing_brush)>0,111,0) fb
                     ,IF(SUM(finishing_oxid)>0,1111,0) fo
                     ,IF(SUM(finishing_rosegoldplate)>0,11111,0) fr
                   FROM products p
                     INNER JOIN products_use_elements pue ON pue.products_id = p.products_id
                   GROUP BY pue.products_id
                  ) dt
              ) subquery_4 ON subquery_4.products_id = p.products_id
  GROUP BY p.products_id ORDER BY p.products_id DESC;

但是当我运行它时。 Mysql 抛出错误

[HY000][1260] Row 8036 was cut by GROUP_CONCAT()

这是我要插入的表格。

CREATE TABLE `products_analysis_cache` (
  `products_id` int(11) NOT NULL,
  `group_styles` longtext NOT NULL,
  `group_finishing` longtext NOT NULL,
  `group_elements` longtext NOT NULL,
  `group_materials` longtext NOT NULL,
  `group_watchlist` longtext NOT NULL,
  PRIMARY KEY (`products_id`),
  KEY `idx_products_id` (`products_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

我已经为每列设置了 LONGTEXT 以接受长文本,但仍然遇到相同的错误。

我做错了什么?

感谢您的帮助。 编辑: 我已根据 mysql 文档将 group_concat_max_len 设置为可用的最大值(18446744073709551615),但它仍然显示错误“被 GROUP_CONCAT() 剪切”

最佳答案

尝试按说明增加 group_concat_max_len 的值 here 。内容是这样的:

The maximum permitted result length in bytes for the GROUP_CONCAT() function. The default is 1024.

关于Mysql 错误行 xxxx 被 GROUP_CONCAT() 剪切,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45100917/

相关文章:

mysql - 使用 count 函数对两个表中的记录进行计数,即使计数为零也返回相同的记录

mysql - 如何长时间存储点击次数/天?

mysql - 左连接包括主表上的位置

php - 更新数据sql查询语法错误

php - 回显数据作为输入值

javascript - 无法使用 MySQL 和 ReactJS 显示行

php - 我应该在 PHP PERFORMANCE-WISE 中为 MySQL 使用准备好的语句吗?

mysql - 如何从mysql的结果中删除十进制数字?

mysql - 如何在 VB.net 中更快地查询和更新

mysql - 使用 ObjectionJS 插入/选择 Mysql 空间列