MySQL:如何在MySQL表上设置行或字节大小限制?

时间:2019-02-21 11:00:43

标签: mysql

我在stackoverflow上查找了类似的问题/答案,但是答案并不令人满意。这就是为什么我以不同的方式提出问题。

我想要的是:我要在innodb表上设置最大行(或字节大小)限制

我做了什么:

阶段1

因此,我创建了一个类型为int(1)的id列。 然后,我在id列上创建了一个索引。索引选择为PRIMARY

请参见下文:

enter image description here

在“尺寸”列中,我尝试分配1。然后单击“开始”按钮。 MySQL Server给了我以下错误:

1089 - Incorrect prefix key; the used key part isn't a string, the used length is longer than the key part, or the storage engine doesn't support unique prefix keys

问题:此错误消息是什么意思?

我将“大小”列保留为空,然后单击“执行”。 这样做之后,我为id列提供了AUTO_INCREMENT属性。 然后我插入了256行。他们插入,正如预期的那样。

阶段2

然后我尝试插入另外50行。 我预计它们会由于ID类型int(1)而失败。 令我惊讶的是,所有50行都插入了。

我认为int(1)的限制为256。 请参阅此链接以备份我的主张:https://dev.mysql.com/doc/refman/8.0/en/integer-types.html

问题:即使列为int(1),为什么仍然可以插入多于256行?

阶段3

我截断了表格,然后使用以下查询对其进行了更改:

ALTER TABLE `my_table` MAX_ROWS = 256

行统计是:

enter image description here

同样,我希望只能插入256行。 因此,我希望在第257行插入后出现错误消息或其他信息。所以我试图插入300行。

令我惊讶的是,所有300行都插入了。

主要问题:如何在MySQL表上设置行或字节大小限制?

1 个答案:

答案 0 :(得分:1)

我想回答自己的问题,因为我自己找到了解决方案。

设置最大行数限制的最简单方法是将id列定义为以下类型之一:

  • TINYINT
  • MEDIUMINT
  • BIGINT

警告:类型:INT +大小未设置最大行数限制。