Что происходит под капотом mysqlimport --delete? Значения auto_increment не сбрасываются

0

Я пытаюсь восстановить базу данных для регрессионных тестов, но значения 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

откройте cmd.exe в той же папке, что и mytable.txt:

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  |
|---------------------|------------------|
Теги:
command-line-interface
mysqlimport

1 ответ

0

ты можешь использовать
ALTER TABLE mytable AUTO_INCREMENT = Значение

Ещё вопросы

Сообщество Overcoder
Наверх
Меню