1

次のように定義されたテーブルがあります。

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 ステートメントを使用してこのテーブル オプションの設定を解除する方法はありますか? または、データをエクスポートし、テーブルを再構築してから、データをインポートし直す必要がありますか? MAX_ROWS に関する MySQL のドキュメントを確認しましたが、正の整数値が必要であるとしか書かれておらず、デフォルト値が何であるか、または 0 の値が何をするかについては言及されていません。

4

2 に答える 2

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、データはほとんど同じです (明らかな違いは別として)。

于 2012-01-06T15:38:07.850 に答える
0

そのオプションを使用したくない場合は、0 に設定してください。

ALTER TABLE `_debug_log` MAX_ROWS = 0;
于 2012-01-06T16:18:28.890 に答える