我有一个表,其中有两个字段,一个是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
如果我有一个大数据库的应用程序,我来这种情况下,任何记录插入可能会失败,那么我怎么知道之前发生了这种情况。有没有什么方法可以在不截断表的情况下插入记录(在空表中删除所有记录)。
对不起,我的英语不好。
谢谢
1条答案
按热度按时间b09cbbtk1#
mysql将自动递增计数器保存在
INFORMATION_SCHEMA
table。我不知道你用的是哪一个版本,但你应该看看文档。正如您在这里看到的,您可以使用