Saltar al contenido

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

Solución:

Supongo que Clients.Case_Number y / o Staff.Emp_ID no son exactamente del mismo tipo de datos que Clients_has_Staff.Clients_Case_Number y Clients_has_Staff.Staff_Emp_ID.

Quizás las columnas de las tablas principales son INT UNSIGNED?

Deben ser exactamente el mismo tipo de datos en ambas tablas.

Razones por las que puede obtener un error de restricción de clave externa:

  1. No está utilizando InnoDB como motor en todas las tablas.
  2. Está intentando hacer referencia a una clave inexistente en la tabla de destino. Asegúrate de que sea un llave en la otra tabla (puede ser una clave principal o única, o simplemente una key)
  3. Los tipos de columnas no son los mismos (la excepción es que la columna en la tabla de referencia puede ser anulable incluso si no es anulable en la tabla referenciada).
  4. Si PK / FK es un varchar, asegúrese de que la intercalación sea la misma para ambos.

Actualizar:

  1. Una de las razones también puede ser que la columna que está utilizando para ON DELETE SET NULL no está definido como nulo. Así que asegúrese de que la columna esté configurada como nula por defecto.

Compruebe estos.

Para otros, es posible que el mismo error no siempre se deba a una falta de coincidencia del tipo de columna, puede encontrar más información sobre un error de clave foriegn de mysql emitiendo el comando

SHOW ENGINE INNODB STATUS;

puede encontrar un error cerca de la parte superior del mensaje impreso, algo como

No se puede encontrar un índice en la tabla a la que se hace referencia donde las columnas a las que se hace referencia aparecen como las primeras columnas, o los tipos de columna en la tabla y la tabla a la que se hace referencia no coinciden con la restricción.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *