Integer

MySQL

Estaba yo tan feliz programando un aplicación que utilizaba MySQL como base de datos cuando, de repente, al dar de alta un nuevo registro en un tabla me saltaba un error que decía:

MySQL Duplicate entry for key PRIMARY

Extrañado, comprobaba una y otra vez el hecho de que la clave principal de aquella tabla era auto-incremental, pero cuando tenía que pasar del valor 127 al 128 se le iba la pinza y siempre intentaba meter el 127 que, como ya existía, saltaba el error.

Buscando por Internet, encontré un bug muy similar a lo que me estaba pasando, pero aquello parece que quedó zanjado en 2008, aunque igualmente probé con alguna solución propuesta sin éxito. Ante tal situación y creyendo que era problema del motor interno de InnoDB, pensaba que tendría que cambiarlo pero entonces me quedaría sin las transacciones y, por tanto, sin los rollback.

Menos mal que al final di con la solución. El campo que utilizaba como clave primaria era de tipo TinyInt que sólo puede almacenar desde -128 hasta 127, por lo que cambiándolo a tipo Integer la limitación me lleva hasta 429.4967.295 registros. Ni bugs ni tonterías, una mala elección por mi parte al diseñar la base de datos.