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

  • Форум по MySQL

  • Статьи по MySQL

  • Вопросы по MySQL

  • MySQL.com


  • Базы данных

  • MySQL

  • PostgreSQL


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

    4.4.6.1. Синтаксис запуска myisamchk

    myisamchk запускается следующим образом:

    shell> myisamchk [options] tbl_name
    

    Опции options определяют, что должна сделать myisamchk. В данном разделе дается описание этих опций (список опций можно также получить, запустив myisamchk --help). Если опции не указаны, myisamchk просто проверяет таблицу. Чтобы получить дополнительную информацию или указать myisamchk выполнить корректирующие действия, надо задать опции, как это описано в этом и в следующих разделах.

    tbl_name - это таблица базы данных, которую нужно проверить/исправить. Если myisamchk запускается не из каталога базы данных, то следует задать путь к файлу, поскольку myisamchk не имеет представления о том, где искать базу данных. В действительности для myisamchk не важно, где находятся рабочие файлы - в каталоге базы данных или нет; можно скопировать файлы, относящиеся к базе данных, в другое место и выполнить операции восстановления над ними там.

    При желании в командной строке myisamchk можно перечислить имена нескольких таблиц. В качестве имени можно также указать имя индексного файла (с суффиксом .MYI), что позволит задавать все таблицы в каталоге при помощи шаблона *.MYI. Например, находясь в каталоге базы данных, можно проверить все таблицы этого каталога следующим образом:

    shell> myisamchk *.MYI
    

    Если каталог базы данных не является текущим, то все таблицы каталога можно проверить, указав к нему путь:

    shell> myisamchk /path/to/database_dir/*.MYI
    

    Можно даже проверить все таблицы во всех базах данных, если задать шаблон вместе с путем к каталогу данных MySQL:

    shell> myisamchk /path/to/datadir/*/*.MYI
    

    Быстро проверять все таблицы рекомендуется следующим образом:

    myisamchk --silent --fast /path/to/datadir/*/*.MYI
    isamchk --silent /path/to/datadir/*/*.ISM
    

    Если необходимо проверить все таблицы и исправить все поврежденные из них, можно использовать следующую строку:

    myisamchk --silent --force --fast --update-state -O key_buffer=64M \
    	  -O sort_buffer=64M -O read_buffer=1M -O write_buffer=1M \
    	  /path/to/datadir/*/*.MYI
    isamchk --silent --force -O key_buffer=64M -O sort_buffer=64M \
    	-O read_buffer=1M -O write_buffer=1M /path/to/datadir/*/*.ISM
    

    Эти команды предполагают, что имеется более чем 64 Mб свободного пространства.

    Следует отметить, что если выдается ошибка, подобная следующей:

    myisamchk: warning: 1 clients is using or hasn't closed the table properly
    

    то это означает, что делается попытка проверить таблицу, обновленную другой программой (такой как mysqld), которая еще не закрыла файл или чье выполнение было прервано без возможности корректно закрыть файл.

    Если mysqld запущен, то необходимо принудительно вызвать синхронизацию/закрытие всех таблиц с помощью FLUSH TABLES и обеспечить, чтобы никто не использовал таблиц, пока выполняется myisamchk. В версии MySQL 3.23 самый простой способ избежать этой проблемы заключается в применении для проверки таблиц команды CHECK TABLE вместо myisamchk.

     
    © 1997-2005 PHP Club Team
    Rambler's Top100