Olá, William, tudo bem?
De fato, o erro 1062 ocorre quando você tenta adicionar uma chave primária a uma tabela que ainda possui duplicatas.
Para solucionar, você precisa primeiro identificar as duplicatas e removê-las antes de adicionar a chave primária.
Você pode utilizar o seguinte comando:
SELECT PRODUTO, COUNT(*) FROM tbproduto GROUP BY PRODUTO HAVING COUNT(*) > 1;
No código acima, utilizamos a cláusula GROUP BY
para encontrar os registros duplicados.
Em seguida, você pode criar uma tabela temporária ou usar subconsultas aninhadas para obter os produtos duplicados e, em seguida, referenciar essa estrutura na cláusula DELETE FROM
. Aqui está um exemplo simplificado de como você poderia abordar isso:
DELETE FROM tbproduto WHERE PRODUTO IN (
SELECT * FROM (
SELECT PRODUTO FROM tbproduto GROUP BY PRODUTO HAVING COUNT(*) > 1
) AS produtos_duplicados
);
Espero ter ajudado.
Caso surja alguma dúvida, fico à disposição.
Abraços e até mais!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!