"Unknowm column in field list" - 截断的列名错误
"Unknowm column in field list" - error from truncated column name
我构建了一个准备好的语句,它将 TEST01
列重命名为在名为 MAPPING
的 table 中映射的列。
对于名为 '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
我比较了每个 table 上的数据结构并将它们对齐到:varchar(100), utf8_bin.
如果我将列(TEST01
和 MAPPING
上的列)重命名为 loca
或任何短于 4 个字符的名称,查询将起作用。
所以,这似乎是一个大小问题,但我不明白背后的原因,为什么问题只出现在那个特定的列上,以及如何解决这个问题。
感谢您的帮助。
来自 https://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html#function_group-concat:
The result is truncated to the maximum length that is given by the
group_concat_max_len system variable, which has a default value of
1024.
我构建了一个准备好的语句,它将 TEST01
列重命名为在名为 MAPPING
的 table 中映射的列。
对于名为 '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
我比较了每个 table 上的数据结构并将它们对齐到:varchar(100), utf8_bin.
如果我将列(TEST01
和 MAPPING
上的列)重命名为 loca
或任何短于 4 个字符的名称,查询将起作用。
所以,这似乎是一个大小问题,但我不明白背后的原因,为什么问题只出现在那个特定的列上,以及如何解决这个问题。
感谢您的帮助。
来自 https://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html#function_group-concat:
The result is truncated to the maximum length that is given by the group_concat_max_len system variable, which has a default value of 1024.