数据库
首页 > 数据库> > mysql – 如何为InnoDB引擎数据库重新设置“自动增量”列?

mysql – 如何为InnoDB引擎数据库重新设置“自动增量”列?

作者:互联网

我正在使用人工主键来表.该表有两列,一列是主键,另一列是Dates(数据类型:Date)列.当我尝试从文件(仅包含第二列的值)加载批量数据时,日期的YYYY部分被添加到主键列(表中的第一列)和日期的其余部分被截断了.

所以我需要重置表格.我使用Truncate表语句尝试了它,但它失败并出现错误,因为该表在另一个表的外键约束中被引用.所以我必须使用delete * from table;声明.我确实删除了所有记录,但是当我再次插入记录时(这次使用insert into语句),它开始从我之前插入的那一年的去年开始递增ID(即它没有刷新它).

注意: – 我正在使用MySQL 5.5和InnoDB引擎.

我的努力如此: –

>我试过ALTER TABLE table1 AUTO_INCREMENT = 0; (Reference第二回答)—>它没有帮助.
>我试过ALTER TABLE table1 DROP列; (Reference-回答1)—>重命名table1时出错
>再次删除表并尝试:

DBCC CHECKIDENT('table1', RESEED, 0);

(Reference)—> “DDBC”处的语法错误 – 意外的INDENT_QUOTED
(此语句就在删除表语句之后,如果是这样的话
事项)
>在this文章的名为“INNODB表的自动增量列”和标题“2009年2月17日更新:”的部分下,它表示在InnoDB中,truncate确实在高于MySQL 4.1的版本中重置了AUTO_INCREMENT索引…所以我想要某种方法来截断我的表,或者做一些其他事情来重置AUTO_INCREMENT索引.

题:-

当我删除表格中的数据时,有没有办法以某种方式重置auto_increment?
我需要一种方法来修复上述DDBC CHECKINDENT错误,或者以某种方式截断在另一个表的外键约束中引用的表.

解决方法:

请遵循以下步骤:

步骤1:禁用外键约束后截断表,然后再次启用 –

set foreign_key_checks=0;
truncate table mytable;
set foreign_key_checks=1;

第2步:现在在批量上传时,选择列中的列只有那些在你的csv文件中意味着取消检查其余的一个(自动ID也是)并确保csv中的列应该与表中的列相同.自动列也不应该在csv文件中.

您可以使用以下命令上传数据.

LOAD DATA LOCAL INFILE '/root/myfile.csv' INTO TABLE mytable fields terminated by ',' enclosed by '"' lines terminated by '\n' (field2,field3,field5);

注意:如果您在Windows环境中工作,请相应更改.

标签:load-data-infile,sql,mysql,bulkinsert
来源: https://codeday.me/bug/20190825/1715741.html