Cuando recibe este vago mensaje de error, puede averiguar el error más específico ejecutando
SHOW ENGINE INNODB STATUS;
Las razones más comunes son que al crear una clave externa, tanto el campo al que se hace referencia como el campo de la clave externa deben coincidir:
- Motor debe ser el mismo p. ej. InnoDB
- Tipo de datos debe ser el mismo y con la misma longitud.
p. VARCHAR(20) o INT(10) SIN FIRMA - Colección debería ser el mismo. por ejemplo, utf8
- Único - La clave externa debe referirse a un campo que es único (normalmente privado) en la tabla de referencia.
Otra causa de este error es:
Ha definido una condición SET NULL aunque algunas de las columnas están definidas como NOT NULL.