Существует несколько случаев, когда выдается эта ошибка:
Используется старая версия MySQL
(до 3.23.0), а размещенная в памяти
временная таблица становится
больше, чем tmp_table_size
байтов. Для решения этой
проблемы можно использовать
опцию -O tmp_table_size=#,
чтобы mysqld увеличил
размер временных таблиц, или
опцию SQL SQL_BIG_TABLES, перед
тем как выдать сомнительный
запрос (see Раздел 5.5.6, «Синтаксис команды SET»). Можно
также запускать mysqld с
опцией --big-tables - эффект
здесь будет таким же, как и от
использования SQL_BIG_TABLES
для всех запросов. В версии MySQL 3.23
размещенные в памяти временные
таблицы после того, как размер
таблицы превысит
tmp_table_size,
автоматически преобразуются в
расположенные на диске таблицы
типа MyISAM.
Используются таблицы
InnoDB и исчерпалось
место в табличном пространстве
InnoDB. В таком случае
следует увеличить табличное
пространство InnoDB.
Используются таблицы
ISAM или MyISAM в
операционной системе, которая
поддерживает файлы размером до 2
Гб, и файл данных или индексный
файл достигли этого предела.
Используются таблицы
MyISAM, и размер
требуемых данных или индекса
превышает тот, который
предусматривался MySQL при
выделении указателей (если
MAX_ROWS не указано в
CREATE TABLE, MySQL выделяет
указатели, предусматривающие
размещение только 4 Гб данных).
Проверить максимальные размеры
данных/индекса можно
посредством
SHOW TABLE STATUS FROM database LIKE 'table_name';
или с помощью myisamchk -dv
база_данных/таблица. Если
проблема связана с указателями,
то это можно исправить с помощью
команды наподобие следующей:
ALTER TABLE table_name MAX_ROWS=1000000000 AVG_ROW_LENGTH=nnn;
Указывать AVG_ROW_LENGTH
нужно только для таблиц с полями
типа BLOB/TEXT, поскольку в
этом случае MySQL не может
оптимизировать требуемое
пространство, исходя только из
количества строк.
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.
© 1995-2005 MySQL AB. All rights reserved.
