首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >错误1826:重复外键约束名称

错误1826:重复外键约束名称
EN

Stack Overflow用户
提问于 2020-10-12 17:27:16
回答 2查看 19.2K关注 0票数 8

谢谢您抽时间见我。我正在尝试用以下说明构建一个数据库

T1-酒店(hotelNo,hotelName,城市)T2-房间(roomNo,hotelNo,type,price) T3-客人(guestNo,guestName,guestAddress) T4-预订(hotelNoguestNoE 29E 110日期从E 211,hotelNo,guestAddress)

我得到了一个约束复制错误,但我无法判断模式中存在复制。

代码语言:javascript
运行
复制
CREATE TABLE `hotel_booking`.`Booking` (
    `hotelNo` VARCHAR(5) NOT NULL,
    `guestNo` VARCHAR(5) NOT NULL,
    `datefFrom` DATE NOT NULL,
    `dateTo` DATE NULL,
    `roomNo` VARCHAR(5) NULL,
    PRIMARY KEY (`hotelNo`, `guestNo`, `datefFrom`),
    INDEX `guestNo_idx` (`guestNo` ASC) VISIBLE,
    INDEX `roomNo_idx` (`roomNo` ASC) VISIBLE,
    CONSTRAINT `hotelNo`
        FOREIGN KEY (`hotelNo`)
        REFERENCES `hotel_booking`.`Hotel` (`hotelNo`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION,
    CONSTRAINT `guestNo`
        FOREIGN KEY (`guestNo`)
        REFERENCES `hotel_booking`.`Guest` (`guestNo`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION,
    CONSTRAINT `roomNo`
        FOREIGN KEY (`roomNo`)
        REFERENCES `hotel_booking`.`Room` (`roonNo`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION);

我得到以下错误错误1826:重复外键约束名称'hotelNo‘什么是错误的,它可以如何纠正?

EN

回答 2

Stack Overflow用户

发布于 2021-01-06 09:19:16

创建约束时,它的名称是数据库范围的。可以使用以下方法列出数据库的所有约束:

代码语言:javascript
运行
复制
select *
from information_schema.table_constraints
where constraint_schema = 'YOUR_DB'

您有此错误,因为您选择将该表上的禁忌名称与同一数据库的另一个表上的另一个约束赋予相同的名称。例如,您可以在约束名称前加上表的名称,这样针对同一个TargetTable.TargetColumn的不同表的约束之间就不会有更多的干扰。

致以问候。蒂埃里·布雷马德

票数 13
EN

Stack Overflow用户

发布于 2020-10-12 17:54:25

您的constraint_name与您的列名相同,导致重复/歧义,将您的foreignkey约束名称更改为与您的列名不同的其他名称,如constraint hello1...

代码语言:javascript
运行
复制
  CONSTRAINT `hotelNo1`
    FOREIGN KEY (`hotelNo`)

其他人也是如此

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64322581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档