2016-11-17 3 views
1

während derselben Datei ausgeführt wird mehrere Male die automatische Erhöhungswert falsch. meine Datei sample.csvmysql Lastdaten infile auto_increment mutiple Inkrementierung

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 

und meine Frage ist

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); 

wenn ich einmal der Wert von id excecute 8 sein wird, aber wenn ich die gleiche Datei erneut auszuführen beginnt die ID von 16. .Warum????

mein Tisch ist

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 
+0

ich diese SQLyog Gemeinschaft versucht - MYSQL GUI v 11.27 (64 Bit) (c) 2001-2013 Webyog Inc –

+0

wenn ich excecute die Datei auf einmal die Der letzte ID-Wert ist 8 und sein auto_increment ist nicht 9. Es wird als 16 angezeigt und wenn ich dieselbe Datei erneut ausführe, beginnt die ID mit 16..why ???? –

Antwort

0

Schließlich ich eine Antwort bekam

müssen wir seinen Motor von InnoDB MyISAM ändern

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; 
0

Wenn möglich, nie auf auto_increment Spalten hängen bestimmte Werte zu haben, als das gleiche Problem, das Sie beschreiben passieren kann. Die ID wird jedes Mal erhöht, wenn Sie in die Tabelle einfügen.

Wenn Sie müssen, können Sie auch das ID-Feld in der csv enthalten könnten, so dass Ihr Import Satz wäre:

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); 

Oder, wenn Sie das nicht tun, können Sie die Zähler zurückzusetzen haben , wie folgt aus:

ALTER TABLE tablename AUTO_INCREMENT = 1; 

Mit dem richtigen auto_increment müssen Sie statt 1. Mehr Infos über das hier: related answer

+0

Ich muss auf Autoinkrement angewiesen sein. Ich kann die ID nicht so weitergeben (ID, Name, Telefon, Adresse); –

+0

Wenn ich den ALTER TABLE Tabellenname AUTO_INCREMENT = 1; Ich muss diesen Wert jedes Mal (mehr als einmal) für meine Dateiausführung ausführen –