Alcune query MySQL creano tabelle temporanee interne per tenere risultati parziali.
A partire da MySQL 5.7.6, il motore di archiviazione predefinito per le tabelle temporanee interne è InnoDB, che ha un limite piuttosto piccolo sulla dimensione delle righe, come puoi vedere (sebbene le colonne BLOB/TEXT possano andare oltre tale limite).
Puoi tornare al vecchio motore di archiviazione predefinito precedente alla 5.7 per le tabelle temporanee interne:
internal_tmp_disk_storage_engine=MyISAM
Questa è la soluzione menzionata in questo bug:" Bug #77398 dimensione della riga troppo grande in mysql 5.7 domanda "