Mira, tu estás poniendo esto en el INSERT:
Código SQL:
Ver originalINSERT INTO `zc1ai_finder_links_terms0` (`link_id`, `term_id`, `weight`)
SELECT 0, `term_id`, ROUND(SUM(`context_weight`), 8)
FROM `zc1ai_finder_tokens_aggregate`
WHERE `map_suffix` = '0' GROUP BY `term` ORDER BY `term` DESC
A mi entender,
estás suponiendo que un cero es NULL, y no es así. Un cero es un dato, una magnitud real, mientras que NULL es un estado de indefinición. No es lo mismo y para las bases de datos eso es crítico.
Cuando usas un AUTO_INCREMENT, la idea es NO PONER la columna, o bien poner NULL donde va ese valor. Al ponerle un cero (0) lo que haces es intentar insertar un dato valido más de una vez en un campo es que es PRIMARY KEY.
Y si recuerdas, los valores de una PK son únicos, irrepetibles, en cada tabla...
Lo pones así:
Código MySQL:
Ver originalINSERT INTO `zc1ai_finder_links_terms0` (`link_id`, `term_id`, `weight`) FROM `zc1ai_finder_tokens_aggregate`
O lo pones así: