Il y a différents cas où vous pouvez obtenir cette erreur :
            Vous utilisez une ancienne version de MySQL (avant 3.23.0)
            quand une table temporaire en mémoire devient plus grande
            que tmp_table_size octets. Pour éviter
            ce problème, vous pouvez utiliser l'option -O
            tmp_table_size=# pour faire augmenter la taille
            des tables temporaires à mysqld ou
            utiliser l'option SQL BIG_TABLES avant
            d'exécuter la requête qui pose problème. See
            Section 13.5.2.8, « Syntaxe de SET ».
          
            Vous pouvez aussi démarrer mysqld avec
            l'option --big-tables. Cela revient à
            utiliser BIG_TABLES pour toutes les
            requêtes.
          
            Dans la version 3.23 de MySQL, les tables temporaires en
            mémoire seront automatiquement changées en tables physique
            MyISAM après qu'elles n'aient dépassé
            tmp_table_size.
          
            Vous utilisez des tables InnoDB et avez
            dépassé leur taille. Dans ce cas, la solution est
            d'augmenter les tailles des tables. See
            Section 15.8, « Ajouter et retirer des données et des logs InnoDB ».
          
            Vous utilisez des tables ISAM ou
            MyISAM sur un système d'exploitation qui
            ne supporte pas les fichiers de plus de 2G et vous avez
            atteint cette limite dans le fichier de données ou d'index.
            See Section 5.2.3, « Variables serveur système ».
          
            Vous utilisez des tables MyISAM et la
            taille des données ou de l'index est plus grande que celle
            que MySQL a alloué aux pointeurs. (Si vous ne spécifiez
            pas MAX_ROWS à CREATE
            TABLE MySQL n'allouera que des pointeurs
            supportant 4G de données).
          
Vous pouvez obtenir la taille maximale des données / index en faisant :
SHOW TABLE STATUS FROM database LIKE 'nom_de_table';
            or using myisamchk -dv
            database/nom_de_table.
          
Si le problème vient de là, vous pouvez le corriger en faisant quelque chose se rapprochant de :
ALTER TABLE nom_de_table MAX_ROWS=1000000000 AVG_ROW_LENGTH=nnn;
            Vous n'avez besoin de spécifier
            AVG_ROW_LENGTH que pour les tables avec
            des champs BLOB/TEXT car dans ce cas, MySQL ne peut
            optimiser l'espace requis en se basant uniquement sur le
            nombre de lignes.
          
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

