Существует несколько случаев, когда выдается эта ошибка:
Используется старая версия MySQL (до 3.23.0), а размещенная в памяти временная таблица становится больше, чем tmp_table_size байтов. Для решения этой проблемы можно использовать опцию -O tmp_table_size=# , чтобы mysqld увеличил размер временных таблиц, или опцию SQL SQL_BIG_TABLES , перед тем как выдать сомнительный запрос (Синтаксис команды 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 Гб данных). Проверить максимальные размеры данных/индекса можно посредством
или с помощью myisamchk -dv база_данных/таблица . Если проблема связана с указателями, то это можно исправить с помощью команды наподобие следующей:
Указывать AVG_ROW_LENGTH нужно только для таблиц с полями типа BLOB/TEXT , поскольку в этом случае MySQL не может оптимизировать требуемое пространство, исходя только из количества строк.
Существует несколько случаев, когда выдается эта ошибка:
- Используется старая версия MySQL (до 3.23.0), а размещенная в памяти временная таблица становится больше, чем tmp_table_size байтов. Для решения этой проблемы можно использовать опцию -O tmp_table_size=# , чтобы mysqld увеличил размер временных таблиц, или опцию SQL SQL_BIG_TABLES, перед тем как выдать сомнительный запрос (see section 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 Гб данных). Проверить максимальные размеры данных/индекса можно посредством или с помощью myisamchk -dv база_данных/таблица . Если проблема связана с указателями, то это можно исправить с помощью команды наподобие следующей: Указывать AVG_ROW_LENGTH нужно только для таблиц с полями типа BLOB/TEXT , поскольку в этом случае MySQL не может оптимизировать требуемое пространство, исходя только из количества строк.
i will really appreciate if someone help me with this. I have spend like 8hours googling around and found no solution to problem.
I have MySQL server version 5.7.7 on Windows server 2008 R2
Table engine is innodb
I get error "Table is full" when table reaches 4Gb. MySQL documentation sais that there is actualy only one limit on table size, filesystem. (http://dev.mysql.com/doc/refman/5.7/en/table-size-limit.html)
HDD where are data stored uses NTFS, just to be sure i created 5Gb file without problems. And sure there is more than 10Gb of free space.
I understand setting "innodb_data_file_path" is irrelevant if "innodb_file_per_table" is enabled, but i tried to set it. No differences. I have tried to do clean install of mysql. Same result.
EDIT
Guy that installed MySQL server before me accidentally installed 32bit version. Migration to 64bit mysql solved that problem