2013-07-04 6 views
7

Mam automatyczny przyrost, klucz podstawowy w MySQL o nazwie ID i jest to INT. W miarę jak moja aplikacja rośnie, a ja otrzymuję więcej użytkowników, robią więcej wpisów. Co się stanie, gdy moja INT osiągnie maksymalną wartość 2 147 483 647? Czy mogę po prostu przejść na BIGINT?Co się dzieje, gdy automatyczny przyrost klucza podstawowego w MySQL osiąga maksymalną wartość:

+1

dlaczego nie używasz BIGINT na pierwszym miejscu? –

+0

Być może zduplikowane pytanie http://stackoverflow.com/questions/2615417/what-happens-when-auto-increment-on-integer-column-reaches-tm-max-value-in-data – rmarimon

+0

Cóż, moja aplikacja jest teraz bardzo mały i myślałem, że wystarczy użyć INT. To dość podobne pytanie. dzięki – FosAvance

Odpowiedz

4

W MySQL official documentation stanowi:

Gdy kolumna osiąga górną granicę typu danych następnego próba generowania numeru sekwencji zawiedzie. Jeśli to możliwe, użyj atrybutu UNSIGNED , aby umożliwić większy zakres.

I tak, można zmienić typy wartości auto_increment. W tym punkcie, dokumentacja radzi używać:

[...] najmniejsza liczba całkowita typ danych dla kolumny AUTO_INCREMENT , który jest wystarczająco duży, aby pomieścić maksymalną wartość sekwencji będzie trzeba.

4

Tak, można zmienić tabelę i zmienić z INT na BIGINT bez problemów.

Ponadto, być może trzeba zmienić typ danych wszędzie tam, gdzie jest to jako FK

+3

+1 Tak, i warto wspomnieć, że trzeba zmienić typy danych FK * przed * zaktualizowaniem PK, do którego się odwołują. W przeciwnym razie można utworzyć wartości PK, których nie można odwoływać się do tabel podrzędnych. –

0

chciałbym podzielić się osobistym doświadczeniem miałem tylko o tym.

Używanie Nagios + Check_MK + NDOUtils. NDOUtils przechowuje wszystkie kontrole w tabeli o nazwie nagios_servicechecks. Klucz podstawowy to auto_increment int signed.

Co stanie się z MySQL, gdy ten limit będzie dostępny? Cóż, w moim przypadku MySQL usunął wszystkie rekordy, ale ostatnie. Stół jest teraz prawie pusty. Za każdym razem, gdy wstawiany jest nowy rekord, stary zostaje usunięty.

Nie wiem, dlaczego tak się dzieje, ale faktem jest, że straciłem wszystkie moje dokumenty.

IDOUtils, używane z Icingą (nie Nagios), rozwiązały ten problem zmieniając int przez biginta.

Powiązane problemy