MySQL auto_increments всегда вставлять 2147483647 - PullRequest
0 голосов
/ 27 января 2019

У меня есть следующий код SQL в PHP

    $conn->query("INSERT INTO orders (Name,Email,phone) VALUES 
    ('$name','$email','$phone')");

моя таблица базы данных имеет идентификатор, имя, адрес электронной почты, телефон

вставка прошла успешно, но для идентификатора всегда установлено значение 2147483647, чтоmax int (11)

, поэтому в моей таблице только одна строка

ID ------------- Имя ------- Email------- телефон

2147483647--John--Smith--John@John.com--04524524

поле id установлено как автоинкремент

вместо того, чтобы быть 1 или 2, он идет до максимума (2147483647)

, даже если я сделаю BIGINT или изменим тип, mysql вставит увеличение максимального идентификатора

1 Ответ

0 голосов
/ 27 января 2019

Вы можете сбросить счетчик с помощью:

ALTER TABLE tablename AUTO_INCREMENT = 1

Для InnoDB вы не можете установить значение auto_increment ниже или равно наибольшему текущему индексу.(цитата из [ViralPatel] [1]):

Обратите внимание, что вы не можете сбросить счетчик до значения, которое меньше или равно любому, которое уже использовалось.Для MyISAM, если значение меньше или равно максимальному значению, которое в данный момент находится в столбце AUTO_INCREMENT, значение сбрасывается до текущего максимального плюс один.Для InnoDB, если значение меньше текущего максимального значения в столбце, ошибки не возникает и текущее значение последовательности не изменяется.

Если вы просто загружаете свою базу данных, вам, возможно, следует подуматьочистка таблицы с помощью:

TRUNCATE TABLE tablename;

Приведенная выше команда также сбросит все автоматические счетчики.

...