MySQL 5.5.28 no Ubuntu 12.04
Se o resultado for mais longo do que group_concat_max_len
então, o resultado será truncado sem graça.
Atualmente eu tenho um script que tenta verificar o comprimento necessário antes do tempo e define group_concat_max_len
para ser grande o suficiente.
Mas a verificação adiciona consultas extras. Existe alguma desvantagem em apenas definir group_concat_max_len
o valor máximo? A vantagem é menos consultas.
Conforme MySQL BOL aqui
O resultado é truncado para o comprimento máximo fornecido pela
group_concat_max_len
variável do sistema, que tem uma extensãodefault value of 1024
. O valor pode ser definido mais alto, embora o comprimento máximo efetivo do valor de retorno seja limitado pelo valor demax_allowed_packet
. A sintaxe para alterar o valor degroup_concat_max_len
atruntime
é a seguinte, onde val é umunsigned integer
:Nota: O
maximum permitted
comprimento do resultadobytes
para aGROUP_CONCAT()
função. O padrão é1024
.Como o MySQL documentou o blog Aqui Usando
GROUP_CONCAT
com uma pequenagroup_concat_max_len
configuração? Seu resultado serásilently truncated
(certifique-se de verificar os avisos).As MySQL Blog by Here : Este parâmetro limita o comprimento do texto de um resultado de concatenação. O padrão é . Acho um valor muito baixo. Eu tenho usado cada vez mais, recentemente, para resolver problemas difíceis. E na maioria dos casos, era apenas , resultando em truncamento silencioso (Argh!) do resultado, retornando resultados incorretos. É interessante saber que o valor máximo para este parâmetro é limitado por . Sugiro, então, que esse parâmetro seja totalmente removido e tenha o como o . Caso contrário, eu gostaria que tivesse um , na ordem de alguns .
@Shlomi Noach
group_concat_max_len
maximum
GROUP_CONCAT
1024
GROUP_CONCAT
1024
too low
max_packet_size
max_packet_size
limitation
only limitation
very large default value
MB
Para mais sua referência aqui e aqui
Eu aprecio que esta pergunta seja um pouco antiga agora, mas caso alguém a encontre e esteja se perguntando, uma desvantagem de definir o valor máximo (ou de outra forma muito grande) é que group_concat pode retornar um blob em vez de um varchar. Sugestões em outros lugares dizem para definir group_concat_max_len como 512 para fazê-lo sempre retornar um varchar em vez de um blob. Eu tendo a apenas lançá-lo para char quando necessário.