mysql加载数据填充自动增量多次增量

mysql加载数据填充自动增量多次增量,mysql,Mysql,多次执行同一文件时,自动递增值将错误。 我的文件是sample.csv name,phone,address a,9401003026,dsa b,9658746542,fsa c,9865742310,hgfh d,9865869537,hf e,9401003026,hf s,9658746542,hf h,9865742310,hf j,9865869537,hf 我的问题是 LOAD DATA LOCAL INFILE '/home/anson/AnsonBackup/python/n

多次执行同一文件时,自动递增值将错误。 我的文件是sample.csv

name,phone,address
a,9401003026,dsa
b,9658746542,fsa
c,9865742310,hgfh
d,9865869537,hf
e,9401003026,hf
s,9658746542,hf
h,9865742310,hf
j,9865869537,hf
我的问题是

LOAD DATA LOCAL INFILE '/home/anson/AnsonBackup/python/newtest/sample.csv'    
           INTO TABLE `sample`  COLUMNS TERMINATED BY ','  
           LINES TERMINATED BY '\n' IGNORE 1 LINES 
           (named,phone,address);
如果我执行一次,id的值将是8,但当我重新执行同一个文件时,id从16开始。为什么

我的桌子是空的

CREATE TABLE `sample` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `named` VARCHAR(30) DEFAULT NULL,
  `phone` VARCHAR(30) DEFAULT NULL,
  `address` VARCHAR(30) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=latin1

如果可能的话,千万不要依赖自动增量列来获得某些值,因为您描述的相同问题可能会发生。每次在表中插入时,id都会增加

如果需要,您还可以在csv中包含id字段,这样您的导入语句将是:

LOAD DATA LOCAL INFILE '/home/anson/AnsonBackup/python/newtest/sample.csv'    
       INTO TABLE `sample`  COLUMNS TERMINATED BY ','  
       LINES TERMINATED BY '\n' IGNORE 1 LINES 
       (id, named, phone, address);
或者,如果不能这样做,则必须重置计数器,如下所示:

ALTER TABLE tablename AUTO_INCREMENT = 1;

使用正确的自动增量,而不是1。更多信息请参见此处:

如果可能,请不要依赖自动增量列来获得某些值,因为您描述的相同问题可能会发生。每次在表中插入时,id都会增加

如果需要,您还可以在csv中包含id字段,这样您的导入语句将是:

LOAD DATA LOCAL INFILE '/home/anson/AnsonBackup/python/newtest/sample.csv'    
       INTO TABLE `sample`  COLUMNS TERMINATED BY ','  
       LINES TERMINATED BY '\n' IGNORE 1 LINES 
       (id, named, phone, address);
或者,如果不能这样做,则必须重置计数器,如下所示:

ALTER TABLE tablename AUTO_INCREMENT = 1;

使用正确的自动增量,而不是1。更多信息请点击这里:

我终于得到了答案

我们必须把它的引擎从INNODB换成MyISAM

CREATE TABLE `sample` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `named` VARCHAR(30) DEFAULT NULL,
  `phone` VARCHAR(30) DEFAULT NULL,
  `address` VARCHAR(30) DEFAULT NULL,
  PRIMARY KEY (`id`)
)  ENGINE=MyISAM DEFAULT CHARSET=latin1 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC;

最后我得到了答案

我们必须把它的引擎从INNODB换成MyISAM

CREATE TABLE `sample` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `named` VARCHAR(30) DEFAULT NULL,
  `phone` VARCHAR(30) DEFAULT NULL,
  `address` VARCHAR(30) DEFAULT NULL,
  PRIMARY KEY (`id`)
)  ENGINE=MyISAM DEFAULT CHARSET=latin1 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC;

我尝试了这个SQLyog社区-MYSQL GUI v 11.27(64位)(c)2001-2013 Webyog Inc当我一次执行该文件时,最后一个id值将是8,其自动增量不是9。它显示为16,当我重新执行同一个文件时,id从16开始。为什么???我尝试了这个SQLyog社区-MYSQL GUI v 11.27(64位)(c)2001-2013 Webyog inc当我一次执行该文件时,最后一个id值将为8,其自动增量不是9。它显示为16,当我重新执行同一文件时,id从16开始。为什么?我必须依赖自动增量。我不能像这样传递身份证(身份证、姓名、电话、地址);如果使用ALTER TABLE tablename AUTO_INCREMENT=1;我必须每次(不止一次)执行此值才能执行文件。我必须依赖于自动增量。我不能像这样传递身份证(身份证、姓名、电话、地址);如果使用ALTER TABLE tablename AUTO_INCREMENT=1;我必须每次(不止一次)执行此值才能执行文件