Cita: cambie de INT a MÉDIUM y me fue bien
Eso no tiene sentido.
Un MEDIUMINT
tiene mucho menos rango de representación que un INT, dado que en lugar de 32 bits usa 24 bits. Eso implica que el máximo numero representable
con signo es 8.388.607, muy por debajo de la cantidad de registros que dices tener. Y en ese caso si pusieras un valor como 8388608, por ejemplo, y el 8388607 ya existiese en la tabla, dispararía un error de clave duplicada.
No le des vueltas, la cosa no va por el tipo de dato, pero sin nos nos explicas cómo es que funciona tu sistema,
no podemos ayudarte.