MySQL 尝试创建多对多关系时出错

MySQL error when trying to create many to many relationship

我正在尝试在 'Rol' 和 'Permisos' 之间创建多对多关系,这是我的代码

Table 'Rol':

CREATE TABLE IF NOT EXISTS `tienda_v1`.`rol` (
  `idrol` INT NOT NULL AUTO_INCREMENT,
  `nombre_rol` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`idrol`))
ENGINE = InnoDB;

Table 'Permiso':

CREATE TABLE IF NOT EXISTS `tienda_v1`.`permiso` (
  `idpermiso` INT NOT NULL AUTO_INCREMENT,
  `nombre_permiso` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`idpermiso`))
ENGINE = InnoDB;

这就是我正在尝试的:

CREATE TABLE `tienda_v1`.`rol_permiso`(
    `rol_id` INT NOT NULL,
    `permiso_id` INT NOT NULL,
    PRIMARY KEY(`rol_id`,`permiso_id`),
    CONSTRAINT `rol_permiso_rol`
        FOREIGN KEY `rol_table_fk` (`rol_id`) REFERENCES `rol` (`idrol`)
        ON DELETE CASCADE ON UPDATE CASCADE,
    CONSTRAINT `rol_permiso_permiso`
        FOREIGN KEY `permiso_table` (`permiso_id`) REFERENCES `permiso` (`idpermiso`)
        ON DELETE CASCADE ON UPDATE CASCADE
)ENGINE = InnoDB;

然后给我这个输出:

17:25:39 CREATE TABLE tienda_v1.rol_permiso( rol_id INT NOT NULL, permiso_id INT NOT NULL, PRIMARY KEY(rol_id,permiso_id), CONSTRAINT rol_permiso_rol
FOREIGN KEY rol_table_fk (rol_id) REFERENCES rol (idrol)
ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT rol_permiso_permiso FOREIGN KEY permiso_table (permiso_id) REFERENCES permiso (idpermiso) ON DELETE CASCADE ON UPDATE CASCADE )ENGINE = InnoDB Error Code: 3780. Referencing column 'rol_id' and referenced column 'idrol' in foreign key constraint 'rol_permiso_rol' are incompatible. 0.000 sec

有人知道发生了什么事吗?请帮忙

提供的表格没有问题。

也许您在数据库中使用了不同的表?

运行

 SHOW CREATE TABLE rol

并检查是否相同

CREATE TABLE IF NOT EXISTS `rol` (
  `idrol` INT NOT NULL AUTO_INCREMENT,
  `nombre_rol` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`idrol`))
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `permiso` (
  `idpermiso` INT NOT NULL AUTO_INCREMENT,
  `nombre_permiso` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`idpermiso`))
ENGINE = InnoDB;
CREATE TABLE `rol_permiso`(
    `rol_id` INT NOT NULL,
    `permiso_id` INT NOT NULL,
    PRIMARY KEY(`rol_id`,`permiso_id`),
    CONSTRAINT `rol_permiso_rol`
        FOREIGN KEY `rol_table_fk` (`rol_id`) REFERENCES `rol` (`idrol`)
        ON DELETE CASCADE ON UPDATE CASCADE,
    CONSTRAINT `rol_permiso_permiso`
        FOREIGN KEY `permiso_table` (`permiso_id`) REFERENCES `permiso` (`idpermiso`)
        ON DELETE CASCADE ON UPDATE CASCADE
)ENGINE = InnoDB;

db<>fiddle here