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

duplicate entry 127 key for key 1

Estas en el tema de duplicate entry 127 key for key 1 en el foro de Mysql en Foros del Web. Tengo ese error, y he leido que me mencionan que cambie el tipo del campo a INT(10) pero cuando intento hacer el cambio me sale ...
  #1 (permalink)  
Antiguo 07/07/2014, 23:31
 
Fecha de Ingreso: abril-2005
Ubicación: Piura - Perú
Mensajes: 189
Antigüedad: 19 años, 7 meses
Puntos: 0
duplicate entry 127 key for key 1

Tengo ese error, y he leido que me mencionan que cambie el tipo del campo a INT(10) pero cuando intento hacer el cambio me sale error

Código:
Alter table `fazunp`.`diag`   
  change `diagnosticoid` `diagnosticoid` int(10) NOT NULL Auto_increment
Error Number : 1025 
Error on rename of '.\fazunp\#sql-874_17d' to '.\fazunp\diag' (errno: 150)
Considerando que la tabla diag es una tabla hija vinculada por diagnosticoid
  #2 (permalink)  
Antiguo 08/07/2014, 02:22
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: duplicate entry 127 key for key 1

No se si es por esto, pero, los autoincrement automaticamente se crean como int(11) tan importante es ese digito de diferencia.

Ahora bien el error que reportas en el titulo y lo que nos cuentas en el post no tienen nada que ver.... no?
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 08/07/2014, 03:09
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: duplicate entry 127 key for key 1

El error de clave duplicada es porque definir ese campo como TYNYINT con signo, lo cual es un error grave. Un ID no debe ser signado y rata vez tan chico. Por eso, cuando intenta crear un número superior al 127 (positivo) se desborda y pone el maximo de su rango positivo que es precisamente 127.

El otro es por la forma en que MySQL hace la modificación. Tienes datos en la tabla y eso causa problemas. Si pudieses vaciar las tablas lo podrías hacer.
Adicionalmente, es altamente probable que haya otra tabla que dependa de esa, o al menos eso parece.
El tema es asi: Para modificar el campo, MySQL hace una copia de de la tabla y transfiere los valores a la nueva, para luego renombrarlo (al menos eso decía el manual); por consecuencia, si hay una tabla dependiente de esa, la acción no se puede realizar porque para lograrla debe en un momento dado borrarse la tabla modificada antes de renombrar l anueva, y eso rompe con la dependencia de FK que exista.

La solución más simple es vaciar las tablas antes de proceder. De no poder vaciarlas, necesitaríamos ver sus estructuras para mejores consejos.
Y por "estructura" nos referimos a los CREATE TABLE completos de esas tablas, y no una descripción. Necesitamos ver con qué cosas reales estás trabajando.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 08/07/2014 a las 06:16

Etiquetas: campo, duplicate, entry, key, sql, tabla
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 13:04.