“字段列表中的未知列”-列名被截断时出错

问题描述 投票:0回答:1

我建立了一条准备好的语句,该语句将TEST01列重命名为映射到名为MAPPING的表中的列。

对于名为'localization'的特定列,我得到以下错误消息:MySQL说:#1054-'field list'中的未知列'loca'。我不明白为什么会这样,特别是因为还有其他列的名称较长,并且它们没有触发相同的错误。

BEGIN
    SELECT CONCAT(
        'CREATE TABLE `table_client_normalized` AS SELECT * FROM (SELECT ',
     GROUP_CONCAT(CONCAT(client_label, ' AS ', master_label)), ', ',  
        QUOTE(MAX(clientid)), ' AS client_id ',
      'FROM TEST01'
    ') A' ) INTO @sql
        FROM `MAPPING` B;

    PREPARE stmt FROM @sql;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;

END

我比较了每个表上的数据结构,并将它们对齐到:varchar(100),utf8_bin。

如果我将TEST01MAPPING上的列重命名为loca或少于4个字符的内容,则查询将起作用。

所以,这似乎是一个大小问题,但我不理解其背后的原因,为什么该问题仅在特定的列上以及如何解决此问题。

谢谢您的帮助。

mysql prepared-statement
1个回答
1
投票

来自https://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html#function_group-concat

结果被截断为由group_concat_max_len系统变量,其默认值为1024。

© www.soinside.com 2019 - 2024. All rights reserved.