已达到主键的最大限制,已从表中删除所有记录,但仍无法插入该记录

jutyujz0  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(350)

我有一个表,其中有两个字段,一个是id,它是具有自动递增属性(tinyint)的主键,另一个是name(varchar(20))。 id tinyint(4)非空自动增量, name varchar(20)不为空,主键( id )
之后,我在表1到127中插入值(tinyint的最大限制)。现在,如果我尝试在表中插入记录,它会给出错误,因为我已经达到tinyint的最大限制。我可以接受。但是如果我删除了所有的记录并且表是空的,那么我也不能插入任何记录。我知道我可以在这里使用truncate来重置主键。但我的问题是,为什么mysql不为主键插入任何可用的值(从1到127),如果我手动为id插入从1到127的值,它就可以工作了。

insert into `new table` (id,name) values(1,'blahblahblah')  Working

insert into `new table` (name) values('blahblahblah') Not working

如果我有一个大数据库的应用程序,我来这种情况下,任何记录插入可能会失败,那么我怎么知道之前发生了这种情况。有没有什么方法可以在不截断表的情况下插入记录(在空表中删除所有记录)。
对不起,我的英语不好。
谢谢

b09cbbtk

b09cbbtk1#

mysql将自动递增计数器保存在 INFORMATION_SCHEMA table。我不知道你用的是哪一个版本,但你应该看看文档。
正如您在这里看到的,您可以使用

ALTER TABLE tablename AUTO_INCREMENT = 1;

相关问题