このエラーが発生するケースとしては、以下のようなさまざまなケースが考えられます。
            旧バージョン(3.23.0 より前)の MySQL
            を使用していて、メモリ内のテンポラリテーブルが
            tmp_table_size
            バイトより大きくなったとき。
            この問題を回避するには、-O
            tmp_table_size=# オプションを使用して
            mysqld
            でテンポラリテーブルサイズを大きくするか、問題のクエリを発行する前に、SQL
            オプション SQL_BIG_TABLES
            を使用する。 See 項5.5.6. 「SET 構文」。
          
            また、--big-tables
            オプションを指定して mysqld
            を開始することもできる。
            これは、すべてのクエリに
            SQL_BIG_TABLES
            を使用しているのとまったく同じ。
          
            MySQL バージョン 3.23
            では、メモリ内のテンポラリテーブルが
            tmp_table_size
            より大きくなると、サーバがそのテーブルを自動的にディスクベースの
            MyISAM テーブルに変換した。
          
            InnoDB
            テーブルを使用しており、InnoDB
            のテーブルスペースが不足している。この問題を解決するには、InnoDB
            のテーブルスペースを拡張する。
          
            サイズが 2GB
            のファイルしかサポートしていない OS で
            ISAM または MyISAM
            テーブルを使用しており、データファイルまたはインデックスファイルが制限に達した。
          
            MyISAM
            テーブルを使用しており、必要なデータまたはインデックスサイズが、MySQL
            がポインタを割り当てたものより大きくなっている(MAX_ROWS
            を CREATE TABLE
            に指定しない場合は、MySQL は 4G
            のデータを保持できる分だけポインタを割り当てる)。
          
最大データとインデックスサイズを確認できる。確認するには、以下のコマンドを実行するか、
SHOW TABLE STATUS FROM database LIKE 'table_name';
            myisamchk -dv database/table_name
            を使用する。
          
これで問題がある場合は、以下の方法で解決できる。
ALTER TABLE table_name MAX_ROWS=1000000000 AVG_ROW_LENGTH=nnn;
            この場合、MySQL
            はレコード数だけに基づいて必要なスペースを最適化することができないので、BLOB/TEXT
            フィールドをもつテーブルに
            AVG_ROW_LENGTH
            を指定することが必要になる。
          
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.

