Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

error 1062 al crear indice

Estas en el tema de error 1062 al crear indice en el foro de Mysql en Foros del Web. buenas soy nuevo en esto foro , he pasado mis dbf a una bd mysql pero al querer crear un indice primary key con el ...
  #1 (permalink)  
Antiguo 30/08/2012, 22:06
 
Fecha de Ingreso: agosto-2012
Mensajes: 4
Antigüedad: 12 años, 2 meses
Puntos: 0
error 1062 al crear indice

buenas soy nuevo en esto foro , he pasado mis dbf a una bd mysql pero al querer crear un indice primary key con el boton derecho sobre el campo me da el error
sql error (1062) duplicate entry "2078" for key primary , cual puede ser la causa , uso mysqladministrador y tambien heidysql portable para trabajar las bd.
gracias
  #2 (permalink)  
Antiguo 31/08/2012, 09:52
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 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.
  #3 (permalink)  
Antiguo 31/08/2012, 10:25
 
Fecha de Ingreso: agosto-2012
Mensajes: 4
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: error 1062 al crear indice

muchas gracias leo , voy a hacer lo que me indicas , soy nuevo en mysql , estoy en face de pasar mi sistema en dbf a mysql , voy bastante bien , trabajo con fox version 9 y con este motor mysql , cualquir duda les comento , pero leo todos los dias este foro , he aprendido mucho de uds.
saludos
alberto.

Etiquetas: 1062, indice, sql, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:27.