2017-07-14 58 views
0

我有這樣的查詢:MySQL錯誤行XXXX被切斷GROUP_CONCAT()

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接受長文本,但仍然有相同的錯誤。

我做錯了什麼?

感謝您的幫助。 編輯: 我已經設置group_concat_max_len根據MySQL文檔中可用的最大值(18446744073709551615),它仍然顯示錯誤「被切斷GROUP_CONCAT()」

回答

1

嘗試增加的group_concat_max_len值作爲解釋here。這就是它所說的:

GROUP_CONCAT() 函數的最大允許結果長度(以字節爲單位)。默認值爲1024.

+0

嗨,它仍然會拋出同樣的錯誤。 – Erick

+0

@Erick你設置了多長? –