MYSQL вставки записей пропуская идентификаторы (автоинкремент) - PullRequest
4 голосов
/ 30 января 2012

Я совершенно новый программист php и не могу понять, где я ошибаюсь, вставляя записи в базу данных MySQL:

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

Мой вопрос: есть ли что-то еще, что может привести к пропуску случайными числами идентификатора?

Пример базы данных: Число с 1-21 просто отлично, но потом идет: 28,43,51,55,58 Я проверил и рядом должно быть добавлено 59:

show create table 'tbl'

Ответы [ 2 ]

4 голосов
/ 30 января 2012

Использует ли ваш код транзакции?Если вы откатываете транзакцию, которая вставляется в эту таблицу, она не откатывает счетчик идентификаторов, даже если транзакция откатывается.

См. Этот вопрос: Таблица MySQL с основным идентификатором AUTO_INCREMENT не освобождает число после отката .

0 голосов
/ 30 января 2012

Я немного догадываюсь, как будет выглядеть код, так как сейчас я тоже работаю с API PayPal, но вот способ позволить auto_increment делать свою работу

Так выглядит моя команда INSERT, и она всегда работает. Но предоставление некоторого кода определенно поможет.

"INSERT INTO `table` (auto_increment_id, field1, field2, field3) VALUES ('','$field1','$field2','$field3')";

Если вы оставите first () пустым и просто поместите значения после VALUES, вы нужно идти с каждым полем, но, как я вам показал, вы говорите, какое поле должно получить какое значение.

Для подключения к действующей базе данных вы можете использовать SQLite. Они называются браузерами баз данных.

...