【问题标题】:What is happening under the hood of mysqlimport --delete? The auto_increment values aren't being resetmysqlimport --delete 的幕后发生了什么? auto_increment 值没有被重置
【发布时间】:2018-08-02 20:25:49
【问题描述】:

我正在尝试恢复数据库以进行回归测试,但 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  |
|---------------------|------------------|

【问题讨论】:

    标签: mysql windows command-line-interface mysqlimport


    【解决方案1】:

    你可以使用
    ALTER TABLE mytable AUTO_INCREMENT = 值

    【讨论】:

      猜你喜欢
      • 2011-10-19
      • 1970-01-01
      • 2011-07-12
      • 1970-01-01
      • 2018-03-29
      • 2019-06-05
      • 1970-01-01
      • 2010-09-06
      • 2018-12-05
      相关资源
      最近更新 更多