2012-01-06 2 views
1

У меня есть таблица, определенная как таковые:Как отключить таблицу MAX_ROWS в таблице MyISAM?

CREATE TABLE `_debug_log` (
    ... 
) ENGINE=MyISAM AUTO_INCREMENT=896692 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci MAX_ROWS=100000 ROW_FORMAT=COMPRESSED; 

я хотел бы отказаться от опции max_rows, как это не является необходимым для этой таблицы, но мне нужно, чтобы сохранить существующие данные. Есть ли способ отключить эту таблицу с помощью оператора ALTER, или мне нужно будет экспортировать данные, перестроить таблицу и затем импортировать данные? Я проверил документы MySQL на MAX_ROWS, но он только говорит, что для этого требуется положительное целочисленное значение и не говорит, что такое значение по умолчанию, или то, что может сделать значение 0.

ответ

0

Для чего это стоит:

CREATE TABLE `_debug_log` (
id int unsigned primary key auto_increment 
) ENGINE=MyISAM AUTO_INCREMENT=896692 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci MAX_ROWS=100000 ROW_FORMAT=COMPRESSED; 

SHOW CREATE TABLE _debug_log; 

дает:

CREATE TABLE `_debug_log` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM AUTO_INCREMENT=896692 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci MAX_ROWS=100000 ROW_FORMAT=COMPRESSED 

затем:

alter table _debug_log max_rows = 0; 

SHOW CREATE TABLE _debug_log; 

дает:

CREATE TABLE `_debug_log` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM AUTO_INCREMENT=896692 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=COMPRESSED 

Я попытался вставить некоторые данные перед запуском ALTER и после запуска ALTER, и это, похоже, не повлияло.

Кроме того, если вы создаете ту же таблицу с теми же параметрами, но исключает возможность MAX_ROWS, вставить те же данные, а затем посмотрите на полученных данных в information_schema.tables данные в значительной степени идентичны (очевидные различия в сторону):

+0

спасибо за ваши исследования по этому вопросу. Он работал, как вы описали в моей собственной системе. –

0

Просто установите его в 0, если вы не хотите использовать эту опцию:

ALTER TABLE `_debug_log` MAX_ROWS = 0; 
Смежные вопросы