У меня есть таблица, в которой я взял два поля один, это 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
Если у меня есть приложение с большой базой данных, и я прихожу к этой ситуации, и любая вставка записи может завершиться неудачно в будущем, то как я могу узнать, прежде чем это произошло. Есть ли способ, с помощью которого я могу вставить запись (в пустой таблице, удалив все записи) без обрезания таблицы.
Извините за моего бедного английского.
Спасибо
Mysql сохраняет ваш счетчик AUTO_INCREMENT в своей таблице INFORMATION_SCHEMA
. Я не знаю, какую версию вы используете, но вы должны прочитать документы об этом.
Как вы можете прочитать здесь, вы можете установить нужный вам номер
ALTER TABLE tablename AUTO_INCREMENT = 1;