在mysqlimport --delete的幕后发生了什么? auto_increment值未重置

时间:2018-08-02 20:25:49

标签: mysql windows command-line-interface mysqlimport

我正在尝试恢复数据库以进行回归测试,但是auto_increment值未正确重置。

我可以在运行mysqlimport之前截断所有表,但这要慢得多。

演示我的问题...

使用MySQL 5.6.39:

CREATE DATABASE mydb;
USE mydb;
CREATE TABLE `mytable` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `text` VARCHAR(50) NOT NULL,
    PRIMARY KEY (id)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
;

INSERT INTO mytable (text) values ("one");
INSERT INTO mytable (text) values ("two");

此时,表应如下所示:

|---------------------|------------------|
|         id          |       text       |
|---------------------|------------------|
|          1          |        one       |
|---------------------|------------------|
|          2          |        two       |
|---------------------|------------------|

使用以下命令创建一个名为mytable.txt的文本文件:

1, garbagetext

mytable.txt所在的文件夹中打开cmd.exe:

mysqlimport --host=%myhost% --user=%myuser% --password=%mypassword% --delete --fields-terminated-by=, --lines-terminated-by="\r\n" --local %mydatabase% mytable.txt

然后将其输入数据库:

INSERT INTO mytable (text) values ("ID should be 2");

结果表将是:

|---------------------|------------------|
|         id          |       text       |
|---------------------|------------------|
|          1          |    garbagetext   |
|---------------------|------------------|
|          3          |  ID should be 2  |
|---------------------|------------------|

1 个答案:

答案 0 :(得分:0)

您可以使用
ALTER TABLE mytable AUTO_INCREMENT =值