Что происходит, когда auto_increment на целочисленном столбце достигает max_value в базах данных?

Я реализую приложение базы данных, и я буду использовать и JavaDB и MySQL как база данных. У меня есть столбец ID в моих таблицах, который имеет целое число как тип, и я использую auto_increment-функцию баз данных для значения.

Но что происходит, когда я получаю больше чем 2 (или 4), миллиард сообщений и целого числа недостаточно? Целое число переполнено и продолжается, или исключение выдается, что я могу обработать?

Да, я мог измениться на долго как тип данных, но как я проверяю, когда это необходимо? И я думаю, что существует проблема с получением last_inserted_id () - функции, если я использую долго в качестве типа данных для идентификационного столбца.

64
задан Jonas 10 April 2010 в 23:29
поделиться

2 ответа

Комментарий Джима Мартина из §3.6.9. «Использование AUTO_INCREMENT» документации MySQL:

На всякий случай, если есть какие-либо вопросы, поле AUTO_INCREMENT / DOES NOT WRAP /. Как только вы достигнете предела размера поля, команды INSERT генерируют ошибку. (Согласно Джереми Коулу)

Быстрый тест с MySQL 5.1.45 приводит к ошибке:

ОШИБКА 1467 (HY000): не удалось прочитать значение автоинкремента из механизма хранения

Вы можете проверить это ошибка при вставке и примите соответствующие меры.

45
ответ дан 24 November 2019 в 15:54
поделиться

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

На самом деле, вы должны проектировать с достаточно большим типом данных для начала. Производительность вашей базы данных не пострадает, даже если вы с самого начала будете использовать 64-битный идентификатор.

9
ответ дан 24 November 2019 в 15:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: