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

Error mysql1:Duplicate entry '7899' for key 2

Estas en el tema de Error mysql1:Duplicate entry '7899' for key 2 en el foro de Mysql en Foros del Web. buenas a ver quien puede ayudarme, en un formulario hago le siguiente insert INSERT INTO datos_basicos (id_caso, nacionalida, cedula_usuario, nombre_usuario, apellido_usuario, sexo, fecha_nac, lugar_nac, id_edo_civil, ...
  #1 (permalink)  
Antiguo 24/04/2012, 15:15
 
Fecha de Ingreso: febrero-2007
Ubicación: Carrizal - Miranda
Mensajes: 7
Antigüedad: 17 años, 1 mes
Puntos: 0
Pregunta Error mysql1:Duplicate entry '7899' for key 2

buenas a ver quien puede ayudarme, en un formulario hago le siguiente insert

INSERT INTO datos_basicos (id_caso, nacionalida, cedula_usuario, nombre_usuario, apellido_usuario, sexo, fecha_nac, lugar_nac, id_edo_civil, id_instruccion, id_ocupacion, id_municipio, edad, calle, nom_edif_casa, piso, apto, casa_nro, pto_referen, telefono, celular, id_empresa, sector, id_relacion) VALUES (0,'V', 7899,'Auri','Mart','F','1967-09-26','Caracas','2','2',2,1,44,'','','',0,0,'','','' ,0,'', 2)

y me esta generando el siguiente error

Error mysql1:Duplicate entry '7899' for key 2


esta es mi tabla de datos basico:


CREATE TABLE IF NOT EXISTS `datos_basicos` (
`id_caso` int(11) unsigned NOT NULL auto_increment,
`nacionalida` varchar(20) collate utf8_spanish_ci NOT NULL,
`cedula_usuario` int(8) unsigned NOT NULL,
`nombre_usuario` varchar(50) collate utf8_spanish_ci NOT NULL,
`apellido_usuario` varchar(50) collate utf8_spanish_ci NOT NULL,
`sexo` varchar(20) collate utf8_spanish_ci NOT NULL,
`fecha_nac` date NOT NULL,
`lugar_nac` varchar(50) collate utf8_spanish_ci NOT NULL,
`id_edo_civil` int(11) unsigned NOT NULL,
`id_instruccion` int(11) unsigned NOT NULL,
`id_ocupacion` int(11) unsigned NOT NULL,
`id_municipio` int(11) unsigned NOT NULL,
`edad` varchar(4) collate utf8_spanish_ci NOT NULL,
`calle` varchar(50) collate utf8_spanish_ci NOT NULL,
`nom_edif_casa` varchar(50) collate utf8_spanish_ci NOT NULL,
`piso` varchar(10) collate utf8_spanish_ci NOT NULL,
`apto` varchar(10) collate utf8_spanish_ci NOT NULL,
`casa_nro` varchar(10) collate utf8_spanish_ci NOT NULL,
`pto_referen` varchar(100) collate utf8_spanish_ci NOT NULL,
`telefono` char(12) collate utf8_spanish_ci NOT NULL,
`celular` char(12) collate utf8_spanish_ci NOT NULL,
`id_empresa` int(11) unsigned NOT NULL,
`sector` varchar(50) collate utf8_spanish_ci NOT NULL,
`id_relacion` int(11) unsigned NOT NULL,
PRIMARY KEY (`id_caso`),
UNIQUE KEY `cedula` (`cedula_usuario`),
KEY `id_municipio` (`id_municipio`),
KEY `id_instruccion` (`id_instruccion`),
KEY `id_relacion` (`id_relacion`),
KEY `id_edo_civil` (`id_edo_civil`),
KEY `id_ocupacion` (`id_ocupacion`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci AUTO_INCREMENT=2 ;

--
-- Volcado de datos para la tabla `datos_basicos`
--

INSERT INTO `datos_basicos` (`id_caso`, `nacionalida`, `cedula_usuario`, `nombre_usuario`, `apellido_usuario`, `sexo`, `fecha_nac`, `lugar_nac`, `id_edo_civil`, `id_instruccion`, `id_ocupacion`, `id_municipio`, `edad`, `calle`, `nom_edif_casa`, `piso`, `apto`, `casa_nro`, `pto_referen`, `telefono`, `celular`, `id_empresa`, `sector`, `id_relacion`) VALUES
(1, 'V', 7899, 'Auri', 'Mart', 'F', '1967-09-26', 'Caracas', 2, 2, 2, 1, '44', '', '', '', '0', '0', '', '', '', 0, '', 2);

--
-- Restricciones para tablas volcadas
--

--
-- Filtros para la tabla `datos_basicos`
--
ALTER TABLE `datos_basicos`
ADD CONSTRAINT `datos_basicos_ibfk_5` FOREIGN KEY (`id_relacion`) REFERENCES `relacion` (`id_relacion`),
ADD CONSTRAINT `datos_basicos_ibfk_1` FOREIGN KEY (`id_edo_civil`) REFERENCES `edo_civil` (`id_edo_civil`) ON UPDATE CASCADE,
ADD CONSTRAINT `datos_basicos_ibfk_2` FOREIGN KEY (`id_instruccion`) REFERENCES `instruccion` (`id_instruccion`),
ADD CONSTRAINT `datos_basicos_ibfk_3` FOREIGN KEY (`id_ocupacion`) REFERENCES `ocupacion` (`id_ocupacion`),
ADD CONSTRAINT `datos_basicos_ibfk_4` FOREIGN KEY (`id_municipio`) REFERENCES `tbl_municipios` (`id_municipio`);


EL CAMPO CEDULA USUARIO ESTA COM (UNIQUE KEY `cedula`), SI LO CAMBIO A INDICE ME GUARDA EL REGISTRO 3 VECES
  #2 (permalink)  
Antiguo 24/04/2012, 18:19
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 14 años
Puntos: 131
Respuesta: Error mysql1:Duplicate entry '7899' for key 2

Prueba con esto

Código MySQL:
Ver original
  1. INSERT INTO datos_basicos (nacionalida, cedula_usuario, nombre_usuario, apellido_usuario, sexo, fecha_nac, lugar_nac, id_edo_civil, id_instruccion, id_ocupacion, id_municipio, edad, calle, nom_edif_casa, piso, apto, casa_nro, pto_referen, telefono, celular, id_empresa, sector, id_relacion) VALUES ('V', 7899,'Auri','Mart','F','1967-09-26','Caracas','2','2',2,1,44,'','','',0,0,'','','' ,0,'', 2)
  #3 (permalink)  
Antiguo 26/04/2012, 13:06
 
Fecha de Ingreso: febrero-2007
Ubicación: Carrizal - Miranda
Mensajes: 7
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Error mysql1:Duplicate entry '7899' for key 2

Gracias hackjose
pero coloque el codigo que me suministraste y nada. No se que hacer chequee a codigo a ver si era un metadata y nada, el problema es en la BD ya que monte otra BD sin normalizar que es la siguiente:

-- phpMyAdmin SQL Dump
-- version 3.4.2
-- http://www.phpmyadmin.net
--
-- Servidor: localhost
-- Tiempo de generación: 26-04-2012 a las 18:51:58
-- Versión del servidor: 5.0.45
-- Versión de PHP: 5.2.1

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Base de datos: `bd_iremujer`
--

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `datos_basicos`
--

CREATE TABLE IF NOT EXISTS `datos_basicos` (
`id_caso` int(11) unsigned NOT NULL auto_increment,
`nacionalida` varchar(20) collate utf8_spanish_ci NOT NULL,
`cedula_usuario` int(8) unsigned NOT NULL,
`nombre_usuario` varchar(50) collate utf8_spanish_ci NOT NULL,
`apellido_usuario` varchar(50) collate utf8_spanish_ci NOT NULL,
`sexo` varchar(20) collate utf8_spanish_ci NOT NULL,
`fecha_nac` date NOT NULL,
`lugar_nac` varchar(50) collate utf8_spanish_ci NOT NULL,
`id_edo_civil` int(11) unsigned NOT NULL,
`id_instruccion` int(11) unsigned NOT NULL,
`id_ocupacion` int(11) unsigned NOT NULL,
`id_municipio` int(11) unsigned NOT NULL,
`edad` varchar(4) collate utf8_spanish_ci NOT NULL,
`calle` varchar(50) collate utf8_spanish_ci NOT NULL,
`nom_edif_casa` varchar(50) collate utf8_spanish_ci NOT NULL,
`piso` varchar(10) collate utf8_spanish_ci NOT NULL,
`apto` varchar(10) collate utf8_spanish_ci NOT NULL,
`casa_nro` varchar(10) collate utf8_spanish_ci NOT NULL,
`pto_referen` varchar(100) collate utf8_spanish_ci NOT NULL,
`telefono` char(12) collate utf8_spanish_ci NOT NULL,
`celular` char(12) collate utf8_spanish_ci NOT NULL,
`id_empresa` int(11) unsigned NOT NULL,
`sector` varchar(50) collate utf8_spanish_ci NOT NULL,
`id_relacion` int(11) unsigned NOT NULL,
PRIMARY KEY (`id_caso`),
UNIQUE KEY `cedula` (`cedula_usuario`),
KEY `id_instruccion` (`id_instruccion`),
KEY `id_relacion` (`id_relacion`),
KEY `id_ocupacion` (`id_ocupacion`),
KEY `id_edo_civil` (`id_edo_civil`),
KEY `id_municipio` (`id_municipio`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci AUTO_INCREMENT=2 ;

--
-- Volcado de datos para la tabla `datos_basicos`
--

INSERT INTO `datos_basicos` (`id_caso`, `nacionalida`, `cedula_usuario`, `nombre_usuario`, `apellido_usuario`, `sexo`, `fecha_nac`, `lugar_nac`, `id_edo_civil`, `id_instruccion`, `id_ocupacion`, `id_municipio`, `edad`, `calle`, `nom_edif_casa`, `piso`, `apto`, `casa_nro`, `pto_referen`, `telefono`, `celular`, `id_empresa`, `sector`, `id_relacion`) VALUES
(1, 'V', 99, 'Auri', 'Martinez', 'F', '1991-04-02', 'Caracas', 1, 2, 1, 1, '21', '555', '', '', '0', '0', '', '', '', 0, '', 2);

--
-- Restricciones para tablas volcadas
--

--
-- Filtros para la tabla `datos_basicos`
--
ALTER TABLE `datos_basicos`
ADD CONSTRAINT `datos_basicos_ibfk_21` FOREIGN KEY (`id_edo_civil`) REFERENCES `edo_civil` (`id_edo_civil`),
ADD CONSTRAINT `datos_basicos_ibfk_22` FOREIGN KEY (`id_instruccion`) REFERENCES `instruccion` (`id_instruccion`),
ADD CONSTRAINT `datos_basicos_ibfk_23` FOREIGN KEY (`id_ocupacion`) REFERENCES `ocupacion` (`id_ocupacion`),
ADD CONSTRAINT `datos_basicos_ibfk_24` FOREIGN KEY (`id_relacion`) REFERENCES `relacion` (`id_relacion`);

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;






Asi si funciona no me genera ningun error...., pero pienso que se puede perder integridad en los datos.
  #4 (permalink)  
Antiguo 26/04/2012, 13:22
 
Fecha de Ingreso: febrero-2007
Ubicación: Carrizal - Miranda
Mensajes: 7
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Error mysql1:Duplicate entry '7899' for key 2

Esta es la que me genera la duplicidad: AVER SI ALGUIEN VE EL ERROR PORQUE YO VERDAD QUE NO LO ENCUENTRO

-- phpMyAdmin SQL Dump
-- version 3.4.2
-- http://www.phpmyadmin.net
--
-- Servidor: localhost
-- Tiempo de generación: 26-04-2012 a las 19:14:07
-- Versión del servidor: 5.0.45
-- Versión de PHP: 5.2.1

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Base de datos: `ire_mujer`
--

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `datos_basicos`
--

CREATE TABLE IF NOT EXISTS `datos_basicos` (
`id_caso` int(11) unsigned NOT NULL auto_increment,
`nacionalida` varchar(20) collate utf8_spanish_ci NOT NULL,
`cedula_usuario` int(8) unsigned NOT NULL,
`nombre_usuario` varchar(50) collate utf8_spanish_ci NOT NULL,
`apellido_usuario` varchar(50) collate utf8_spanish_ci NOT NULL,
`sexo` varchar(20) collate utf8_spanish_ci NOT NULL,
`fecha_nac` date NOT NULL,
`lugar_nac` varchar(50) collate utf8_spanish_ci NOT NULL,
`id_edo_civil` int(11) unsigned NOT NULL,
`id_instruccion` int(11) unsigned NOT NULL,
`id_ocupacion` int(11) unsigned NOT NULL,
`id_municipio` int(11) unsigned NOT NULL,
`edad` varchar(4) collate utf8_spanish_ci NOT NULL,
`calle` varchar(50) collate utf8_spanish_ci NOT NULL,
`nom_edif_casa` varchar(50) collate utf8_spanish_ci NOT NULL,
`piso` varchar(10) collate utf8_spanish_ci NOT NULL,
`apto` varchar(10) collate utf8_spanish_ci NOT NULL,
`casa_nro` varchar(10) collate utf8_spanish_ci NOT NULL,
`pto_referen` varchar(100) collate utf8_spanish_ci NOT NULL,
`telefono` char(12) collate utf8_spanish_ci NOT NULL,
`celular` char(12) collate utf8_spanish_ci NOT NULL,
`id_empresa` int(11) unsigned NOT NULL,
`sector` varchar(50) collate utf8_spanish_ci NOT NULL,
`id_relacion` int(11) unsigned NOT NULL,
PRIMARY KEY (`id_caso`),
KEY `id_municipio` (`id_municipio`),
KEY `id_instruccion` (`id_instruccion`),
KEY `id_relacion` (`id_relacion`),
KEY `id_edo_civil` (`id_edo_civil`),
KEY `id_ocupacion` (`id_ocupacion`),
KEY `cedula_usuario` (`cedula_usuario`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci AUTO_INCREMENT=5 ;

--
-- Volcado de datos para la tabla `datos_basicos`
--

INSERT INTO `datos_basicos` (`id_caso`, `nacionalida`, `cedula_usuario`, `nombre_usuario`, `apellido_usuario`, `sexo`, `fecha_nac`, `lugar_nac`, `id_edo_civil`, `id_instruccion`, `id_ocupacion`, `id_municipio`, `edad`, `calle`, `nom_edif_casa`, `piso`, `apto`, `casa_nro`, `pto_referen`, `telefono`, `celular`, `id_empresa`, `sector`, `id_relacion`) VALUES
(1, 'V', 88, 'Auri', 'Martinez', 'F', '1991-04-02', 'Caracas', 1, 2, 1, 1, '21', '555', '', '', '0', '0', '', '', '', 0, '', 2),
(2, 'V', 88, 'Auri', 'Martinez', 'F', '1991-04-02', 'Caracas', 1, 2, 1, 1, '21', '555', '', '', '0', '0', '', '', '', 0, '', 2),
(3, 'V', 99, 'Auri', 'Martinez', 'F', '1991-04-02', 'Caracas', 1, 2, 1, 1, '21', '555', '', '', '0', '0', '', '', '', 0, '', 2),
(4, 'V', 99, 'Auri', 'Martinez', 'F', '1991-04-02', 'Caracas', 1, 2, 1, 1, '21', '555', '', '', '0', '0', '', '', '', 0, '', 2);

--
-- Restricciones para tablas volcadas
--

--
-- Filtros para la tabla `datos_basicos`
--
ALTER TABLE `datos_basicos`
ADD CONSTRAINT `datos_basicos_ibfk_15` FOREIGN KEY (`id_relacion`) REFERENCES `relacion` (`id_relacion`) ON UPDATE CASCADE,
ADD CONSTRAINT `datos_basicos_ibfk_11` FOREIGN KEY (`id_edo_civil`) REFERENCES `edo_civil` (`id_edo_civil`) ON UPDATE CASCADE,
ADD CONSTRAINT `datos_basicos_ibfk_12` FOREIGN KEY (`id_instruccion`) REFERENCES `instruccion` (`id_instruccion`) ON UPDATE CASCADE,
ADD CONSTRAINT `datos_basicos_ibfk_13` FOREIGN KEY (`id_ocupacion`) REFERENCES `ocupacion` (`id_ocupacion`) ON UPDATE CASCADE,
ADD CONSTRAINT `datos_basicos_ibfk_14` FOREIGN KEY (`id_municipio`) REFERENCES `tbl_municipios` (`id_municipio`) ON UPDATE CASCADE;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
  #5 (permalink)  
Antiguo 26/04/2012, 14:07
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Error mysql1:Duplicate entry '7899' for key 2

Cita:
EL CAMPO CEDULA USUARIO ESTA COM (UNIQUE KEY `cedula`), SI LO CAMBIO A INDICE ME GUARDA EL REGISTRO 3 VECES
Comencemos por el principio: Si estás declarando ese campo como UNIQUE, eso implica que no pueden existir dos registros en esa tabla que contengan el mismo numero de cédula...
Es decir, ese campo pasa a funcionar como una clave primaria alternativa (lo que se denomina una clave candidata o CC), por lo que cumple con las mismas restricciones que la PK.
En tu caso, lo que sucede es que tienes datos inconsistentes en la tabla, o los estás intentando ingresar, porque si te fijas en tu propio sicript, estás intentandometer datos repetidos:
Código MySQL:
Ver original
  1. NSERT INTO `datos_basicos` (`id_caso`, `nacionalida`, `cedula_usuario`, `nombre_usuario`, `apellido_usuario`, `sexo`, `fecha_nac`, `lugar_nac`, `id_edo_civil`, `id_instruccion`, `id_ocupacion`, `id_municipio`, `edad`, `calle`, `nom_edif_casa`, `piso`, `apto`, `casa_nro`, `pto_referen`, `telefono`, `celular`, `id_empresa`, `sector`, `id_relacion`) VALUES
  2. (1, 'V', 88, 'Auri', 'Martinez', 'F', '1991-04-02', 'Caracas', 1, 2, 1, 1, '21', '555', '', '', '0', '0', '', '', '', 0, '', 2),
  3. (2, 'V', 88, 'Auri', 'Martinez', 'F', '1991-04-02', 'Caracas', 1, 2, 1, 1, '21', '555', '', '', '0', '0', '', '', '', 0, '', 2),
  4. (3, 'V', 99, 'Auri', 'Martinez', 'F', '1991-04-02', 'Caracas', 1, 2, 1, 1, '21', '555', '', '', '0', '0', '', '', '', 0, '', 2),
  5. (4, 'V', 99, 'Auri', 'Martinez', 'F', '1991-04-02', 'Caracas', 1, 2, 1, 1, '21', '555', '', '', '0', '0', '', '', '', 0, '', 2);
Esto es un error habitual en las etapas de testing, donde se llenan de datos de prueba las tablas, sin cuidar la consistencia de los mismo.

Depura los datos de esas tablas y empieza desde el principio.
__________________
¿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 08/05/2012, 14:44
 
Fecha de Ingreso: febrero-2007
Ubicación: Carrizal - Miranda
Mensajes: 7
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Error mysql1:Duplicate entry '7899' for key 2

Al final lo que hice para solucionar temporalmente elimine del codigo:

Código PHP:
Ver original
  1. mysql_query($sql2)or die("Error mysql1:".mysql_error());

y dejo de darme el error
  #7 (permalink)  
Antiguo 08/05/2012, 14:54
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Error mysql1:Duplicate entry '7899' for key 2

A ver si entiendo: ¿Desactivaste la advertencia de error?



Eso sería lo mismo que si un piloto de jets apaga la alarma porque le molesta el sonido... El problema subsiste, y tarde o temprano se estrellará.
__________________
¿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 09/05/2012, 07:27
 
Fecha de Ingreso: febrero-2007
Ubicación: Carrizal - Miranda
Mensajes: 7
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Error mysql1:Duplicate entry '7899' for key 2

gnzoloyo
Es verdad tienes toda la razon del comentario anterior, chequee la BD y todo esta bien, me lleve los Query a el PhpAdmin y funcionan perfecto, el problema esta en el codigo PHP y es lo que estoy chequeando... se que lo voy a resolver, cuando encuentre la solucion lo publicare.
Muchas Gracias
  #9 (permalink)  
Antiguo 09/05/2012, 14:47
Avatar de fahs82  
Fecha de Ingreso: abril-2012
Ubicación: guadalajara
Mensajes: 139
Antigüedad: 12 años
Puntos: 12
Respuesta: Error mysql1:Duplicate entry '7899' for key 2

como comento gonzolo declarando la cedula com unique key te restringe a solo insertar un registro como key , otra cosa que observo son las comillas , si quieres dejar ese espacio vacio te recomiendo mejor lo declares como null al pasarlo a la bd y tambien seria bueno que actualices tu version de mysql . intenta modificar esto y a ver si funciona , ojo no podras insertar mas de una vez el valor de la cedula si sigues declarandola como key

Etiquetas: entry, key, sql, tabla, 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 09:54.