Mysql “字段列表中的未知列”-来自截断列名的错误

Mysql “字段列表中的未知列”-来自截断列名的错误,mysql,prepared-statement,Mysql,Prepared Statement,我构建了一个准备好的语句,它将TEST01列重命名为映射到名为MAPPING的表中的列 对于一个名为“本地化”的特定列,我收到以下错误消息:MySQL说:1054-字段列表中的未知列“loca”。我不明白为什么这一个特别,因为有其他列的名称较长,他们没有触发相同的错误 BEGIN SELECT CONCAT( 'CREATE TABLE `table_client_normalized` AS SELECT * FROM (SELECT ', GROUP_CON

我构建了一个准备好的语句,它将TEST01列重命名为映射到名为MAPPING的表中的列

对于一个名为“本地化”的特定列,我收到以下错误消息:MySQL说:1054-字段列表中的未知列“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
我比较了每个表上的数据结构,并将它们与:varchar100、utf8\u bin对齐

如果我将TEST01和MAPPING上的列重命名为loca或任何短于4个字符的列,查询将正常工作

所以,这似乎是一个规模问题,但我不明白背后的原因,为什么问题只出现在那个特定的专栏上,以及如何解决这个问题

感谢您的帮助。

发件人:

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

发件人:

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


你能在这里发布创建的最终查询吗?这样我们就可以知道查询的语法是否正确了?您的客户标签字段中似乎有一个特殊字符。您只需在@sql行的prepare stmt上方插入select@sql即可知道最终查询。以下是在这种情况下有效的查询,否则它不会显示:创建表\u client\u规范化为select*from select client AS cont\u id,commande AS transaction\u id,no\u ligne AS line\u id,date\u commande\u client AS transaction\u date,intitule作为店铺名称,“tes”作为来自TEST01的客户id,您可以在这里发布创建的最终查询吗?这样我们就可以知道查询的语法是否正确了?您的客户标签字段中似乎有一个特殊字符。您只需在@sql行的prepare stmt上方插入select@sql即可知道最终查询。以下是在这种情况下有效的查询,否则它不会显示:创建表\u client\u规范化为select*from select client AS cont\u id,commande AS transaction\u id,no\u ligne AS line\u id,date\u commande\u client AS transaction\u date,intitule作为store_name,“tes”作为TEST01 AI的客户端_id不理解为什么这个列会导致错误,因为还有其他列的名称较长,并且它们没有触发相同的错误。我认为这是因为它是最后一个列,并且刚好超过了配置的限制。如果你发布问题中的所有列名,这可能会有所帮助。将限制改为2024年,效果很好!谢谢Alex R。我不明白为什么这个列会导致错误,因为还有其他列的名称较长,并且它们没有触发相同的错误。我想这是因为它是最后一个列,并且刚好超过了配置的限制。如果你发布问题中的所有列名,这可能会有所帮助。将限制改为2024年,效果很好!谢谢你,亚历克斯R。