【问题标题】:What is the meaning of AUTO_INCREMENT=20018215 here in table schema表模式中 AUTO_INCREMENT=20018215 的含义是什么
【发布时间】:2013-09-26 16:12:27
【问题描述】:
CREATE TABLE `tblspmaster` (
  `CSN` bigint(20) NOT NULL AUTO_INCREMENT,
  `SP` varchar(50) NOT NULL,
  `FileImportedDate` date NOT NULL,
  `AMZFileName` varchar(580) NOT NULL,
  `CasperBatch` varchar(50) NOT NULL,
  `BatchProcessedDate` date NOT NULL,
  `ExpiryDate` date NOT NULL,
  `Region` varchar(50) NOT NULL,
  `FCCity` varchar(50) NOT NULL,
  `VendorID` int(11) NOT NULL,
  `LocationID` int(11) NOT NULL,
  PRIMARY KEY (`CSN`)
) ENGINE=InnoDB AUTO_INCREMENT=20018215 DEFAULT CHARSET=latin1;

表模式中的AUTO_INCREMENT=20018215是什么意思。当我插入500k 记录时,我的身份从1 到500k 都可以,但是当我尝试插入下一个500k 记录时,下一个记录的身份列值为524281 而不是500001

【问题讨论】:

  • 您确定发生了这种情况吗?看到这个小提琴:sqlfiddle.com/#!2/025d8/1
  • 我很惊讶它在 CSN 列中为我显示 1 作为第一个值,并且它以自动增量方式工作,直到 500k 但是当我开始第二个插入过程时,它会创建大约 24k 个数字。
  • 可能是你桌子上的触发器?
  • 无触发器 :( ..................

标签: mysql innodb auto-increment


【解决方案1】:

较大的初始值 20018215 可能是您在 MySQL Workbench 中执行“发送到 SQL 编辑器”->“创建语句”菜单选择时自动递增的先前值。这只是一个跳过现有数据的安全值,以防您必须重新导入以前的记录。

我有同样的问题,但在从已知表生成几个“创建”编辑模板后,我注意到 AUTO_INCREMENT 值对应于这些表中现有记录的数量。我从模板中删除了较大的值,因为我希望我的新表以主键 = 1 开头。

【讨论】:

    【解决方案2】:

    这意味着第一个自动分配的值(给CSN)将是20018215

    【讨论】:

    • 它从 1 开始,但在 50 万条记录后给我带来了问题。
    • @rahularyansharma:- 你确定你使用相同的脚本来创建表格吗??
    • @rahularyansharma:- 自动增量的最大值是 18446744073709551615。所以绝对不能有范围问题!!!
    • @rahularyansharma 检查您的数据库中的 DDL。在 MySQL 工作台中,您可以通过 right-clicking on the table -> copy to clipboard -> create statement 进行操作
    • 所以要么你插入/查看了错误的表格,要么你错过了一些东西,因为它显然可以作为@juergen d already mentioned
    猜你喜欢
    • 2022-01-06
    • 2011-04-20
    • 1970-01-01
    相关资源
    最近更新 更多