поиск:
Полезные ссылки

  • Форум по MySQL

  • Статьи по MySQL

  • Вопросы по MySQL

  • MySQL.com


  • Базы данных

  • MySQL

  • PostgreSQL


  • PHP конференция 2005
    Подробности!

    A.2.10. Ошибка The table is full

    Существует несколько случаев, когда выдается эта ошибка:

    • Используется старая версия 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 не может оптимизировать требуемое пространство, исходя только из количества строк.

     
    © 1997-2005 PHP Club Team
    Rambler's Top100