Ok...
id | int(50) | NO | PRI | NULL | auto_increment
Tu columna id dice que si es numérico y autoincrementable pero también dice que puede ser nulo y eso está mal, porque si no lo defines al insertar un valor entonces queda nulo en ves de crear el valor numérico autoincrementado.
Debes modificarlo e indicarle que no puede ser nulo:
ALTER TABLE nombredelatabla MODIFY id INT NOT NULL AUTO_INCREMENT PRIMARY KEY;
Ojo, cuando lo hags te dará un error si tienes registros nulos, para aplicar ese cambio debes asignar un valor a cada registro nulo.
Otro cuidado es el valor de inicio del autoincrementable, probablemente la base de datos no ha utilizado la función de autoincremento por lo cual el primer valor a asignar al crear un registro sea el 1 y luego el 2 y así, pero si ya tienes esos valores utilizados entonces tendrás un problema.
Para solucionar esto debes modificar el valor del autoincrementable para que comience a partir del siguiente valor mas grande que tengas:
ALTER TABLE nombredelatabla AUTO_INCREMENT = 100;
Donde 100 es el valor que comenzará a utilizar.
Si quieres saber tu valor máximo actual puedes utilizar:
SELECT MAX(id) FROM nombredelatabla;
A eso le sumas uno y ya.
Para saber si tienes registros nulos:
SELECT * FROM nombredelatabla WHERE id IS NULL LIMIT 100;
Saludos.