【问题标题】:Auto increment value get set to ' 18446744073709551615 ' with multiple load data infile自动增量值设置为“18446744073709551615”,具有多个加载数据文件
【发布时间】:2013-08-13 06:50:28
【问题描述】:

我的一个项目面临一个问题。我有一个清单上传,它将数据从 csv 导入到 innodb 表。这里发生的事情是使用多个加载数据命令(我想)自动增量值设置为 18446744073709551615 并且不允许其他插入工作。它以前工作正常。我不确定表中的大量数据是否会导致此问题。

表格详情如下

软件版本:5.5.31-0ubuntu0.12.04.1-log - (Ubuntu)

使用的最大插入 ID:17455787099

表格行数:23887371

与此相关的一些变量如下

自动增量增量 1 自动增量偏移 1 自动提交 自动 sp 权限开启 innodb 自动扩展增量 8 innodb autoinc 锁定模式 1 sql auto 为 null 关闭文档

我已从表中删除删除查询。但是自动记录仍然不同步

非常感谢任何帮助

谢谢

尼丁

【问题讨论】:

  • 导入不带AUTO_INCREMENT,完成后再设置。
  • 如果 auto-inc 字段的类型是 INTEGER,它只能处理这么大的数字。我不记得确切但可以在这个网站上找到。尝试将其更改为 BIGINT Integer max val = 4,294,967,295
  • @BartFriederichs 我正在导入没有自动增量
  • @DevlshOne 目前我正在使用 unsigned bigint
  • 您省略了我认为最相关的信息:传入的数据集是否包含列为18446744073709551615 或更大的行?

标签: mysql innodb auto-increment


【解决方案1】:

自动增量值设置为 18446744073709551615-最大 使用的插入 ID:17455787099

这有点令人困惑。

在加载新文件之前尝试重置自动增量值:

ALTER TABLE tableName AUTO_INCREMENT = 1

编辑:

创建一个新的相同表:

CREATE TABLE tableName LIKE oldtableName;

将所有行复制到新表中,记住不要选择auto_incrementing id。

INSERT INTO tableName (field2, field3, field4)
SELECT field2, field3, field4 FROM oldtableName ORDER BY oldtableName.id;
DROP oldtableName;
RENAME tableName oldtableName;

这需要一段时间(数小时..或更多)。

EDIT2

如果你的 id 列没有被任何东西引用

ALTER TABLE tableName DROP id

ALTER TABLE tableName ADD id INT NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (id), AUTO_INCREMENT=1

【讨论】:

  • 感谢您的回答。自动增量值设置为 18446744073709551615-使用的最大插入 ID:17455787099 表状态中显示的自动增量为 18446744073709551615 我已经尝试过您指定的 edit2。但问题再次发生。关于 ALTER TABLE tableName AUTO_INCREMENT = 1 执行此查询需要很长时间
猜你喜欢
  • 1970-01-01
  • 2017-09-16
  • 1970-01-01
  • 2014-05-12
  • 2013-04-21
  • 2012-11-30
  • 1970-01-01
  • 2011-11-25
  • 2021-02-17
相关资源
最近更新 更多