我在stackoverflow上查找了类似的问题/答案,但是答案并不令人满意。这就是为什么我以不同的方式提出问题。
我想要的是:我要在innodb表上设置最大行(或字节大小)限制。
我做了什么:
阶段1
因此,我创建了一个类型为int(1)
的id列。
然后,我在id
列上创建了一个索引。索引选择为PRIMARY
。
请参见下文:
在“尺寸”列中,我尝试分配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
行统计是:
同样,我希望只能插入256行。 因此,我希望在第257行插入后出现错误消息或其他信息。所以我试图插入300行。
令我惊讶的是,所有300行都插入了。
主要问题:如何在MySQL表上设置行或字节大小限制?
答案 0 :(得分:1)
我想回答自己的问题,因为我自己找到了解决方案。
设置最大行数限制的最简单方法是将id
列定义为以下类型之一:
TINYINT
MEDIUMINT
BIGINT
警告:类型:INT
+大小未设置最大行数限制。