«Неизвестный столбец в списке полей» - ошибка из усеченного имени столбца - PullRequest
0 голосов
/ 27 октября 2019

Я построил подготовленный оператор, который переименовывает 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

Я сравнил структуру данных в каждой таблице и выровнял их по: varchar(100), utf8_bin.

Если я переименую столбцы (как TEST01 и MAPPING) в loca или что-либо короче 4 символов, запрос будет работать.

Так что, похоже, это проблема размера, но я не понимаю причину, почему проблема только в этом конкретном столбце и что нужно сделать, чтобы решить эту проблему.

Спасибоза вашу помощь.

1 Ответ

2 голосов
/ 28 октября 2019

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

Результат усекается до максимальной длины, заданной системной переменной group_concat_max_len со значением по умолчанию 1024.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...