Certaines requêtes MySQL créent des tables temporaires internes pour conserver des résultats partiels.
Depuis MySQL 5.7.6, le moteur de stockage par défaut pour les tables temporaires internes est InnoDB, qui a une assez petite limite sur la taille des lignes, comme vous pouvez le voir (bien que les colonnes BLOB/TEXT puissent dépasser cette limite).
Vous pouvez revenir à l'ancien moteur de stockage par défaut antérieur à la version 5.7 pour les tables temporaires internes :
internal_tmp_disk_storage_engine=MyISAM
Voici la solution de contournement mentionnée dans ce bogue :"Bug #77398 taille de ligne trop grande dans mysql 5.7 requête "