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

问题描述 投票:1回答:1

我看了一下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表上设置行或字节大小限制?

mysql
1个回答
1
投票

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

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

  • TINYINT
  • MEDIUMINT
  • BIGINT

警告:类型:INT + size不设置最大行限制。

© www.soinside.com 2019 - 2024. All rights reserved.