Algumas consultas MySQL criam tabelas temporárias internas para manter resultados parciais.
A partir do MySQL 5.7.6, o mecanismo de armazenamento padrão para tabelas temporárias internas é o InnoDB, que tem um limite bem pequeno no tamanho da linha, como você pode ver (embora as colunas BLOB/TEXT possam ir além desse limite).
Você pode voltar ao antigo mecanismo de armazenamento padrão pré-5.7 para tabelas temporárias internas:
internal_tmp_disk_storage_engine=MyISAM
Esta é a solução mencionada neste bug:"Bug #77398 row size too large in mysql 5.7 consulta "