Tengo dos tablas como tal;MySQL arreglando brechas de autoincrement en dos tablas
id_image foo bar
1 3 5
2 8 1
3 17 88
7 14 23
8 12 9
id_image bar foo
1 2 3
1 5 6
2 18 11
2 10 12
3 8 21
3 17 81
7 29 50
7 1 14
8 10 26
8 27 34
hay un hueco en el id_image
autoincremented en la primera tabla. En la segunda tabla, el id_image
se refiere al id_image
en la primera tabla, y hay dos de cada ID allí.
Aviso: Esta tabla es teórica. No tengo ni idea donde el espacio es exactamente, o si hay incluso huecos múltiples. Todo lo que sé es que el primer valor es 1
y el último valor es más alto que el recuento total de filas.
Ahora, me gustaría solucionar este problema.
Antes de decir que las lagunas no importan y si lo hacen, es un mal diseño de la base de datos, déjame decirte; Estoy de acuerdo con usted.
Sin embargo, con lo que estoy tratando es de un sistema de código abierto de terceros (irremediablemente de atrás hacia atrás) al que debo importar una gran cantidad de datos existentes que no tienen identificadores de referencias cruzadas en múltiples mesas. La única manera en que puedo asegurarme de que los mismos datos obtengan un ID coincidente en todas las tablas del sistema es ingresarlo secuencialmente, y eso significa que no puedo tener espacios vacíos.
Entonces, lo que ahora necesito hacer es;
- Fijar la brecha en la columna de la
id_image
en la primera tabla, por lo que el último valor coincide con el número de filas. - Edite la columna
id_image
en la segunda tabla para que su valor corresponda a la misma fila que se corresponde antes de la corrección de hueco.
¿Cómo podría comenzar a hacer esto? Entiendo que esto podría estar fuera de las capacidades del lenguaje de consulta de MySQL, por lo que las respuestas de PHP también son aceptables. ¡Gracias! :)
¿es el motor innodb? – Sebas
Sí lo es. Sin embargo, la brecha fue causada por tener que volver a ingresar una parte de los datos, no por el error INSERT IGNORE. :) –
¿Puedes bloquear la tabla y luego recorrerla con 'SELECT image_id FORM table ORDER BY image_id ASC' y encontrar las lagunas? –