"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é aparece el error 1215 de MySQL: \"No se puede agregar una restricción de clave externa\"?

¿Por qué aparece el error 1215 de MySQL: \"No se puede agregar una restricción de clave externa\"?

Publicado el 2024-11-04
Navegar:656

 Why Am I Getting MySQL Error 1215: \

Error 1215 de MySQL: "No se puede agregar una restricción de clave externa"

Al intentar crear una restricción de clave externa en MySQL, es crucial asegúrese de que tanto el campo referenciado como el campo de clave externa cumplan con requisitos específicos. A continuación se explica cómo diagnosticar y resolver este error:

Consistencia del motor

  • El motor "InnoDB" debe usarse para ambas tablas involucradas.

Tipo de datos y longitud

  • Los tipos de datos y las longitudes de ambos campos deben coincidir exactamente. Por ejemplo, si el campo al que se hace referencia es VARCHAR(20), el campo de clave externa también debe ser VARCHAR(20).

Intercalación

  • La intercalación indica el conjunto de caracteres y las reglas de clasificación. Ambos campos deben usar la misma intercalación, como utf8.

Singularidad

  • El campo al que se hace referencia debe ser único, a menudo indicado por primario o único llaves. El campo de clave externa no puede hacer referencia a campos que permitan valores duplicados.

Manejo de nulos

  • Asegúrese de no haber definido una condición SET NULL cuando algunas columnas a las que se hace referencia se declaran NOT NULL.

Síntomas adicionales

Si el error persiste, ejecute el comando SHOW ENGINE INNODB STATUS; para revelar detalles más específicos.

Declaración incorrecta

La declaración SQL proporcionada crea una tabla llamada "curso" con una restricción de clave externa que hace referencia a la tabla "departamento" en la campo "nombre_depto". Sin embargo, esta afirmación es incorrecta porque carece de la especificación del tipo de datos para el campo "dept_name". Para rectificar esto, la declaración debe modificarse de la siguiente manera:

create table course (
    course_id varchar(7),
    title varchar(50),
    dept_name varchar(20),
    credits numeric(2,0),
    primary key(course_id),
    foreign key (dept_name) references department(dept_name)
);
Ú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