Я пытаюсь восстановить базу данных для регрессионных тестов, но значения 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 |
|---------------------|------------------|
ты можешь использовать
ALTER TABLE mytable AUTO_INCREMENT = Значение