auto_increment

Heute abend bin ich beinahe an einem ganz bescheuerten Bug verzweifelt der so dämlich ist, daß ich es mir nicht nehmen lasse ihn hier zum besten zu geben:

Vorlauf: Kunde meldet sich, “nix geht mehr”. Ok, schauen wir mal. Tja, Tools laufen, MySQl Tables auch ok, nur.. irgendwie kann man nix mehr inserten!
Wir hax0rn mal sicherheitshalber:

mysql> insert into posreport set mmsi=1;
ERROR 1062 (23000): Duplicate entry ‘2147483647’ for key 1

Hä was ist denn des? Ich pfusche noch eine Weile herum bis klar ist, daß man nur noch was eintragen kann wenn man der auto_increment Spalte definierte Werte gibt. Aber das Schöne an auto_increment ist halt das Auto, ja, teilweise wie im richtigen Leben auch. Der geht nimmer! Warum? Weil auto_increment nicht wieder bei 1 anfängt, wenn er voll ist. Dann gibts ein truncate. Angeblich geht das aus der Doku hervor aber ich bin heute dafür nicht gemacht.

mysql> select max(id) from posreport;
+————+
| max(id) |
+————+
| 2147483647 |
+————+
1 row in set (0.00 sec)

mysql> alter table posreport auto_increment=1;
Query OK, 0 rows affected (0.05 sec)
Records: 0 Duplicates: 0 Warnings: 0

Und ja, das bedeutet daß seine DB bis zum heutigen Tage an die 2,2 Mrd. Positionsmeldungen verarbeitet hat. Manchmal schon praktisch, daß man sowas nicht von Hand machen muß :-)

Leave a Reply