Достигнут максимальный предел первичного ключа и удалены все записи из таблицы, но по-прежнему не удается вставить запись

0

У меня есть таблица, в которой я взял два поля один, это id, который является первичным ключом с атрибутом Auto Increment (tinyint), а другой - именем (varchar (20)).

id tinyint (4) NOT NULL AUTO_INCREMENT, name varchar (20) NOT NULL, PRIMARY KEY (id)

после этого я вставляю значения в таблицу от 1 до 127 (максимальный предел tinyint). Теперь, если я попытаюсь вставить запись в таблицу, она дает ошибку, потому что я достиг максимального предела tinyint. Я в порядке с ним. Но если я удалю все записи, а таблица пуста, то и я не могу вставить какую-либо запись. Я знаю, что я могу использовать truncate здесь, который сбросит первичный ключ. Но мой вопрос заключается в том, почему mysql не вставляет никакого доступного значения (от 1 до 127) для первичного ключа, и если я вручную вставляю значение id с 1 на 127, он работает.

insert into 'new table' (id,name) values(1,'blahblahblah')  Working

insert into 'new table' (name) values('blahblahblah') Not working

Если у меня есть приложение с большой базой данных, и я прихожу к этой ситуации, и любая вставка записи может завершиться неудачно в будущем, то как я могу узнать, прежде чем это произошло. Есть ли способ, с помощью которого я могу вставить запись (в пустой таблице, удалив все записи) без обрезания таблицы.

Извините за моего бедного английского.

Спасибо

  • 0
    потому что auto_increment не сбрасывается
Теги:
auto-increment

1 ответ

1
Лучший ответ

Mysql сохраняет ваш счетчик AUTO_INCREMENT в своей таблице INFORMATION_SCHEMA. Я не знаю, какую версию вы используете, но вы должны прочитать документы об этом.

Как вы можете прочитать здесь, вы можете установить нужный вам номер

ALTER TABLE tablename AUTO_INCREMENT = 1;

Ещё вопросы

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