当前位置: 首页 > 知识库问答 >
问题:

试图创建多对多关系时出现MySQL错误

韦高谊
2023-03-14
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;
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创建表tienda_v1rol_permiso(rol_idINT NOT NULL,permiso_id)主键(rol_id
外键rol_table_fk(rol_id)引用rol(idrol)在删除级联上引用/code>外键permiso_table(permiso_id)引用删除级联上的permiso(idpermiso)引擎=InnoDB错误代码:3780。外键约束“ROL_PERMISO_ROL”中引用列“ROL_ID”和引用列“IDROL”不兼容。0.000秒

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


共有1个答案

郏稳
2023-03-14

提供的表没有问题。

也许您正在数据库中使用diffrent表?

快跑

 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;
 类似资料:
  • 用户表结构:用户 id、名称、用户名、密码、创建时间、更新时间 文章表结构:文章 id、标题、内容、创建时间、更新时间 关系表:文章\用户 id、文章id、用户id处于活动状态、创建时间、更新时间 标签 id、名称、用户id、创建时间、更新时间 透视表项目用户与标记的关系。表:文章\用户\标签 标签号,物品号,用户号 我想连接这些表,以便可以像这样或类似的格式访问 并且应该能够创建/更新smth,

  • 我需要创建一个学生管理系统,它可以帮助多个老师教多个学生,多个学生可以有多个老师。现在我已经在下面创建了一个代码。另外,如果你认为有更好的方法来实现我的目标,请指导,我对多对多的关系是新的,互联网上有这么多方法,这只是让人困惑: 错误是:

  • 对于我正在构建的一个类似论坛的网站,我有PHP类'user'和'post‘。用户有一个帖子数组。如何与关系数据库中的连接相似?在“post”上有一个外键,指向一个“user”?这对我来说是有意义的,因为这是一对一的关系,而“user”到“post”是一对多的,就我所见。欢迎有任何想法-谢谢!

  • 问题内容: 我正在使用Microsoft SQL Server Management Studio,并且在创建联结表时是否应该为联结表创建ID列,如果需要,还应将其设为主键和标识列吗?还是为我要加入的多对多关系表保留2列? 例如,如果这将是多对多表: 我应该制作联结表吗: [并将我的主键用作身份列]? 或者: [并且只保留它没有主键或身份表]? 问题答案: 我将使用第二个联结表: 主键将是两列的组

  • 我试图从使用FileAppender切换到使用log4j2的RollingFileAppender(在beta3和beta4 jar中都会发生)。 看起来好像正在读取配置文件,并且appender正在试图创建,但不确定我做错了什么。 我尝试过剪切和粘贴其他人的RollingFileAppender配置,但我仍然得到上面的错误。 谢了。

  • 所以我试图从数据库模型创建一个EER图,我想做类似的事情。 我想知道是什么导致了这种情况的发生(也许我做错了什么,但现在我想不出任何合理的解释…) 希望有人能对此有所启发。 谢谢!