gpt4 book ai didi

mysql - 如何取消 MyISAM 表上的 MAX_ROWS 表选项?

转载 作者:行者123 更新时间:2023-11-30 23:34:28 26 4
gpt4 key购买 nike

我有一个这样定义的表:

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 可能做什么。

最佳答案

物有所值:

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 中的结果数据数据几乎相同(除了明显的差异):

关于mysql - 如何取消 MyISAM 表上的 MAX_ROWS 表选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8759721/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com