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

clave primaria duplicada pero no es asi

Estas en el tema de clave primaria duplicada pero no es asi en el foro de Mysql en Foros del Web. Estoy haciendo prubas con mi base de datos pero estoy viendo que a partir de unos 40.000 registro tengo problemas no me hace mas insert ...
  #1 (permalink)  
Antiguo 05/12/2017, 06:42
 
Fecha de Ingreso: agosto-2011
Mensajes: 306
Antigüedad: 13 años, 3 meses
Puntos: 5
clave primaria duplicada pero no es asi

Estoy haciendo prubas con mi base de datos pero estoy viendo que a partir de unos 40.000 registro tengo problemas no me hace mas insert me dice que la clave primaria es duplicada cuando no es asi.

actualmente en la tabla tengo 35.000 registros intento insertar otro registro:

Código MySQL:
Ver original
  1. INSERT INTO pruebas(valor,fecha)VALUES(123,CURRENT_TIMESTAMP())

Error:
#1062 - Duplicate entry '35001' for key 'PRIMARY'

la tabla solo tiene tres campos un id,valor,fecha, el id lo tengo como clave primaria con un autoincrementador, el valor lo tengo como index unico y fecha pues como fecha, en realidad me inserta bien los valores pero a partir de ese id me dice que es duplicado pero no es asi no existe ese id, que puede estar pasando eh problado desde phpmyadmin y desde la consola de mysql.

mysql: 5.6.12
phpmyadmin:4.0.4


en el phpmyadmin tengo estas advertencias:
Una versión más reciente de phpMyAdmin está disponible y le recomendamos que la obtenga. La versión más reciente es 4.7.6, y existe desde el 2017-12-01.

El almacenamiento de configuración phpMyAdmin no está completamente configurado, algunas funcionalidades extendidas fueron deshabilitadas. Pulsa aquí para averiguar por qué.

se que es antigua y deberia actualizarse pero es esta la causa de porque no funciona, esque es un error muy extraño, porque la clave no es duplicada ni mucho menos.
espero que los expertos me puedan decir que esta pasando.
saludos
  #2 (permalink)  
Antiguo 05/12/2017, 09:16
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: clave primaria duplicada pero no es asi

dices que el valor lo tienes como indice unico, no estara ahi el problema?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 05/12/2017, 10:18
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: clave primaria duplicada pero no es asi

¿cuál es el tipo de dato y de cuanta longitud usado en el id?
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #4 (permalink)  
Antiguo 05/12/2017, 13:44
 
Fecha de Ingreso: agosto-2011
Mensajes: 306
Antigüedad: 13 años, 3 meses
Puntos: 5
Respuesta: clave primaria duplicada pero no es asi

hola, respondo a los dos.
Libras el dato es clave unica pero no se repite la clave lo he verificado si ya existia un valor de todas formas el mensaje me dice que es el la clave primaria 3...que se duplica .

mortiprogramador el campo de la clave primaria lo tengo como int, es decir deberia funcionar.

puede ser que sea por una version antigua o algo, creo que no tiene nada que ver deberia funcionar.

cualquier prueba a realizar decirmela estoy saturado con el tema ya.
saludos
  #5 (permalink)  
Antiguo 05/12/2017, 17:27
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: clave primaria duplicada pero no es asi

Posteanos el SHOW CREATE TABLE de la tabla en cuestión. SUponiendo que "pruebas" sea tu tabla, necesitamos lo que devuelva esto:

Código SQL:
Ver original
  1. SHOW CREATE TABLE pruebas;

MySQL NUNCA se equivoca. Si dice que la clave se duplica, es que lo hace. Lo que hay que verificar es por qué causa, y lo primero que hay que mirar es la definición física de la tabla y su PK.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 16/12/2017, 03:36
 
Fecha de Ingreso: agosto-2011
Mensajes: 306
Antigüedad: 13 años, 3 meses
Puntos: 5
Respuesta: clave primaria duplicada pero no es asi

Hola,se que nunca se equivoca mysql pero quizas una version mala antigua, al final lo solucione, tenia el campo id PK con unsigned lo quite y funciono.
Realmente no estoy muy seguro por que pasa esto si los autoincrement no son numeros negativos.
  #7 (permalink)  
Antiguo 16/12/2017, 05:13
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: clave primaria duplicada pero no es asi

Si hubieses posteado lo que te pedí, hubiésemos llegado auna mejor solución.
Francamente no creo que ese haya sido el problema, porque en todo caso un entero con signo reduce a la mitad el rabdo de autoincrementales que se pueden generar y al sobrepasar el límite de empiezan a producir duplicaciones.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 16/12/2017, 08:01
 
Fecha de Ingreso: agosto-2011
Mensajes: 306
Antigüedad: 13 años, 3 meses
Puntos: 5
Respuesta: clave primaria duplicada pero no es asi

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Si hubieses posteado lo que te pedí, hubiésemos llegado auna mejor solución.
Francamente no creo que ese haya sido el problema, porque en todo caso un entero con signo reduce a la mitad el rabdo de autoincrementales que se pueden generar y al sobrepasar el límite de empiezan a producir duplicaciones.
Hola cuando tenga tiempo posteo lo que me pedistes,realmente quiero saber lo que esta pasando,pero segun dices tiene que ser lo que dije ya que tenia el campo con unsigne siendo un tipo entero y reduciendose los ai a la mitad ya empezaban a duplicarse.

Posteare lo que me pedistes y gracias por ayudarme.
Saludos
  #9 (permalink)  
Antiguo 18/12/2017, 02:51
 
Fecha de Ingreso: agosto-2011
Mensajes: 306
Antigüedad: 13 años, 3 meses
Puntos: 5
Respuesta: clave primaria duplicada pero no es asi

Hola, muestro como cree la tabla para hacer mis pruebas.

Código MySQL:
Ver original
  1. CREATE TABLE `pruebas` (
  2.  `valor` int(9) unsigned NOT NULL,
  3.  `fecha` datetime DEFAULT NULL,
  4.  PRIMARY KEY (`id`),
  5.  UNIQUE KEY `valor` (`valor`)
  6. ) ENGINE=MyISAM AUTO_INCREMENT=43894 DEFAULT CHARSET=utf8

espero que ahora se me pueda explicar exactamente lo que estaba fallando.

saludos
  #10 (permalink)  
Antiguo 21/12/2017, 05:22
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: clave primaria duplicada pero no es asi

Bueno, mira. Hay un par de cosas a tener en cuenta...

El UNSIGNED puesto en la clave primaria es imposible que pueda causar un comportamiento como el que dices. Pasar de INT con signo a INT UNSIGNED lo único que hace es en todo caso duplicar el rango de números posibles de generar. Nunca restringirlos.
Pero lo que sí es notable de lo que dices en el primer post es esto:
Cita:
Error:
#1062 - Duplicate entry '35001' for key 'PRIMARY'
Y si miramos con cuidado, el valor del AI definido ahora para la tabla es:
Cita:
ENGINE=MyISAM AUTO_INCREMENT=43894
El número parece ya estar ingresado, por lo que en realidad no debería poder insertarse, y por eso dispara el error.

Ahora, si bien nos muestras el insert de esta forma:
Código SQL:
Ver original
  1. INSERT INTO pruebas(valor,fecha)VALUES(123,CURRENT_TIMESTAMP())
no estamos viendo cómo haces el proceso de inserciones, por lo que estamos SUPONIENDO que lo haces manualmente o por un LOAD DATA. Pero si lo haces por otro medio, es posible (sólo posible) que esté incluyendo el ID como valor a insertar y allí se esté duplicando.
Lo que queda claro es que dado que el valor reclamado por el sistema es el 35001, y el error es a partir de intentar cargar desde el 40.000, de alguna forma tu proceso de inserciones está mandando datos que no tiene que mandar...

Necesitaríamos ver como haces exactamente esa carga "masiva" para saber dónde está el fallo.

Finalmente, una nota: Ten en cuenta que estás usando un ENGINE obsoleto de MySQL, el MyISAM, y en ese motor, cuando truncas la tabla para volver a probarla, NO SE REINICIA el AI. Las MyISAM requieren re-iniciación EXPRESA.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: campo, clave, duplicada, primaria, registro, 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 07:18.