español - mysql wikipedia
Error 1022-No se puede escribir; duplicar la clave en la tabla (7)
Acabo de pasar las últimas 4 horas con el mismo problema. Lo que hice fue simplemente asegurarme de que las restricciones tuvieran nombres únicos.
Puede cambiar el nombre de las restricciones. Agregué un número al mío para poder rastrear fácilmente el número de ocurrencias.
Ejemplo
Si una restricción en una tabla se denomina chico con una clave externa X La siguiente restricción con la clave externa X se puede llamar boy1
Estoy seguro de que descubrirás mejores nombres que yo. 🙂
Obtengo un error 1022 con respecto a las claves duplicadas en el comando create table. Después de examinar la consulta, no puedo entender dónde se está produciendo la duplicación. ¿Alguien más puede verlo?
SQL query:
-- -----------------------------------------------------
-- Table `apptwo`.`usercircle`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `apptwo`.`usercircle` (
`idUserCircle` MEDIUMINT NOT NULL ,
`userId` MEDIUMINT NULL ,
`circleId` MEDIUMINT NULL ,
`authUser` BINARY NULL ,
`authOwner` BINARY NULL ,
`startDate` DATETIME NULL ,
`endDate` DATETIME NULL ,
PRIMARY KEY ( `idUserCircle` ) ,
INDEX `iduser_idx` ( `userId` ASC ) ,
INDEX `idcategory_idx` ( `circleId` ASC ) ,
CONSTRAINT `iduser` FOREIGN KEY ( `userId` ) REFERENCES `apptwo`.`user` (
`idUser`
) ON DELETE NO ACTION ON UPDATE NO ACTION ,
CONSTRAINT `idcategory` FOREIGN KEY ( `circleId` ) REFERENCES `apptwo`.`circle` (
`idCircle`
) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE = INNODB;
MySQL said: Documentation
#1022 - Can''t write; duplicate key in table ''usercircle''
Cambie el nombre de la clave externa en MySQL. No puede tener los mismos nombres de clave externa en las tablas de la base de datos.
Compruebe todas sus tablas y todas sus claves externas y evite tener dos claves externas con el mismo nombre exacto.
De los dos enlaces resueltos con éxito y la convención de nombres , resolví fácilmente este mismo problema al que me enfrenté. es decir, para el nombre de la clave externa, dé como fk _colName_ TableName . Esta convención de nomenclatura no es ambigua y también hace que cada ForeignKey en su Modelo de BD sea única y nunca obtendrá este error.
Error 1022: No se puede escribir; duplicar la clave en la tabla
Esto también puede surgir en conexión con un error en ciertas versiones de la herramienta de cambio de esquema en línea de Percona Toolkit. Para mutar una tabla grande, pt-osc primero crea una tabla duplicada y copia todos los registros en ella. En algunas circunstancias, algunas versiones de pt-osc 2.2.x intentarán dar a las restricciones en la nueva tabla los mismos nombres que las restricciones en la tabla anterior.
Se lanzó una solución en 2.3.0.
Consulte https://bugs.launchpad.net/percona-toolkit/+bug/1498128 para obtener más detalles.
Lo más probable es que ya tenga una restricción con el nombre iduser
o idcategory
en su base de datos. Simplemente cambie el nombre de las restricciones si es así.
También encontré ese problema. Comprueba si el nombre de la base de datos ya existe en Mysql, y cambia el nombre al anterior.
Tuve este problema al crear una nueva tabla. Resulta que el nombre Foreign Key que di ya estaba en uso. Cambiar el nombre de la clave lo solucionó.