"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué recibo el error 1022 de MySQL: \"No se puede escribir; clave duplicada en la tabla\" aunque solo tenga una clave?

¿Por qué recibo el error 1022 de MySQL: \"No se puede escribir; clave duplicada en la tabla\" aunque solo tenga una clave?

Publicado el 2024-11-07
Navegar:971

 Why Am I Getting MySQL Error 1022: \

Error de MySQL 1022: una colisión de nombres de claves externas

Al intentar crear una tabla usando MySQL, aparece el error 1022: "No se puede escribir; clave duplicada en la mesa." El aspecto peculiar es que la tabla solo define una clave, pero el error persiste.

Tras la investigación, parece que un fragmento específico dentro de la definición de la tabla desencadena el error:

CONSTRAINT `error_id`
FOREIGN KEY (`error_id` )
REFERENCES `mydb`.`errors` (`error_id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,

Si bien existen definiciones de clave externa similares en otras tablas sin problemas, el problema radica en el nombre de la clave externa: error_id.

La causa raíz:

El problema surge porque un nombre de clave externa no puede ser el mismo que otro nombre de clave externa dentro de todo el modelo de base de datos. Esto significa que si dos tablas hacen referencia a la misma tabla, las claves externas en cada tabla deben tener nombres únicos.

Solución:

Para resolver el error, simplemente proporcione el clave externa en cuestión un nombre diferente. Por ejemplo, podrías llamarlo fk_error_id. Esto la distinguirá de cualquier otra clave externa en el modelo y permitirá a MySQL crear la tabla exitosamente.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3