Ver Mensaje Individual
  #2 (permalink)  
Antiguo 31/08/2012, 09:52
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: error 1062 al crear indice

Hola panchimancuso:

Creo que es tu primer mensaje, así es que antes que nada bienvenido al foro... ahora sí, entrando en materia, el error no es con la creación de los datos, sino más bien con los datos. Por un lado, estás tratando de hacer una columna PRIMARY KEY, hay que recordar que las llaves primarias DEBEN SER ÚNICAS EN TODA LA TABLA... lo que dice el error es que el existen más de un registro con la clave 2078, por lo tanto, esta columna NO PUEDE DEFINIRSE COMO LLAVE PRIMARIA. Observa este script:

Código MySQL:
Ver original
  1. mysql> CREATE TABLE tabla (id INT, campo VARCHAR(10));
  2. Query OK, 0 rows affected (0.13 sec)
  3.  
  4. mysql> INSERT INTO tabla VALUES (1, 'uno'), (2, 'dos'), (2, 'doce');
  5. Query OK, 3 rows affected (0.07 sec)
  6. Records: 3  Duplicates: 0  Warnings: 0
  7.  
  8. mysql> SELECT * FROM tabla;
  9. +------+-------+
  10. | id   | campo |
  11. +------+-------+
  12. |    1 | uno   |
  13. |    2 | dos   |
  14. |    2 | doce  |
  15. +------+-------+
  16. 3 rows in set (0.00 sec)

Observa que hay dos registros con el id = 2, por lo tanto, si intentara crear una llave primaria con este campo marcaría el error que te está apareciendo:

Código MySQL:
Ver original
  1. mysql> ALTER TABLE tabla ADD PRIMARY KEY (id);
  2. ERROR 1062 (23000): Duplicate entry '2' for key 'PRIMARY'


Qué alternativas tienes??? puedes eliminar los registros duplicados, cambiar el valor de la llave duplicada o tratar de formar una llave primaria compuesta... para el ejemplo voy a cambiar el valor de la llave duplicada:

Código MySQL:
Ver original
  1. mysql> UPDATE tabla SET id = 12 WHERE campo = 'doce';
  2. Query OK, 1 row affected (0.12 sec)
  3. Rows matched: 1  Changed: 1  Warnings: 0
  4.  
  5. mysql> SELECT * FROM tabla;
  6. +------+-------+
  7. | id   | campo |
  8. +------+-------+
  9. |    1 | uno   |
  10. |    2 | dos   |
  11. |   12 | doce  |
  12. +------+-------+
  13. 3 rows in set (0.00 sec)
  14.  
  15. mysql> ALTER TABLE tabla ADD PRIMARY KEY (id);
  16. Query OK, 3 rows affected (0.34 sec)
  17. Records: 3  Duplicates: 0  Warnings: 0

De esta manera puedo crear el índice sin problemas.

Saludos
Leo.