Gracias por postear el script. Eso lo hizo más fácil.
El problema está las cláusulas ON DELETE y ON UPDATE, porque en tres tablas una de ellas decía SET NULL, lo que era imposible porque el campo usado como FK estaba declarado como NOT NULL.
Un simple problema de lógica.
Código MySQL:
Ver originalSET @OLD_UNIQUE_CHECKS
=@@UNIQUE_CHECKS
, UNIQUE_CHECKS
=0; SET @OLD_FOREIGN_KEY_CHECKS
=@@FOREIGN_KEY_CHECKS
, FOREIGN_KEY_CHECKS
=0; SET @OLD_SQL_MODE
=@@SQL_MODE
, SQL_MODE
='TRADITIONAL';
-- -----------------------------------------------------
-- Table `blog`.`categoria`
-- -----------------------------------------------------
-- -----------------------------------------------------
-- Table `blog`.`sub_categoria`
-- -----------------------------------------------------
INDEX `categoria- sub_catgoria` (`id_categoria` ASC) ,
-- -----------------------------------------------------
-- Table `blog`.`publicacion`
-- -----------------------------------------------------
INDEX `categoria-publicacion` (`id_sub_categoria` ASC) , REFERENCES `blog`.
`sub_categoria` (`id_sub_categoria` )
-- -----------------------------------------------------
-- Table `blog`.`imagen`
-- -----------------------------------------------------
INDEX `imagen-publicacion` (`id_publicacion` ASC) , REFERENCES `blog`.
`publicacion` (`id_publicacion` )
-- -----------------------------------------------------
-- Table `blog`.`archivos_externos`
-- -----------------------------------------------------
INDEX `archivo-publicacion` (`id_publicacion` ASC) , REFERENCES `blog`.
`publicacion` (`id_publicacion` )
-- -----------------------------------------------------
-- Table `blog`.`usuario`
-- -----------------------------------------------------
-- -----------------------------------------------------
-- Table `blog`.`comentario`
-- -----------------------------------------------------
INDEX `comentario-usuario` (`id_usuario` ASC) , INDEX `comentario-publicacion` (`id_publicacion` ASC) , REFERENCES `blog`.
`publicacion` (`id_publicacion` )
-- -----------------------------------------------------
-- Table `blog`.`favorito`
-- -----------------------------------------------------
INDEX `usurio-favorito` (`id_usuario` ASC) , INDEX `favorito-publicacio` (`id_publicacion` ASC) , REFERENCES `blog`.
`publicacion` (`id_publicacion` )
-- -----------------------------------------------------
-- Table `blog`.`historial`
-- -----------------------------------------------------
INDEX `historial-publicacion` (`id_publicacion` ASC) , INDEX `historial-usuario` (`id_usuario` ASC) , REFERENCES `blog`.
`publicacion` (`id_publicacion` )
-- -----------------------------------------------------
-- Table `blog`.`valoracion`
-- -----------------------------------------------------
INDEX `usuario-valoracion` (`id_usuario` ASC) , INDEX `valoracion-publicacion` (`id_publicacion` ASC) , REFERENCES `blog`.
`publicacion` (`id_publicacion` )
SET SQL_MODE
=@OLD_SQL_MODE
; SET FOREIGN_KEY_CHECKS
=@OLD_FOREIGN_KEY_CHECKS
; SET UNIQUE_CHECKS
=@OLD_UNIQUE_CHECKS
;