You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL执行报错[1061]:重复键名'book_lending'问题求助

解决MySQL创建表时的重复键名错误(1061)

错误原因

你遇到的SQL错误[1061]是因为重复使用了同一个外键约束名。在三个外键声明中,你都将约束名设为book_lending,而MySQL要求每个数据库约束(外键、主键、唯一键等)必须拥有唯一名称,重复命名会触发该错误。

另外,你的列定义顺序逻辑不够清晰,建议先声明所有列,再集中定义约束。

修正后的SQL代码

create table book_lending(
    book_id int,
    branch_id int,
    card_no int,
    date_out date,
    due_date date,
    primary key(book_id, branch_id, card_no),
    -- 为每个外键指定唯一约束名
    foreign key fk_book_lending_book(book_id) references book(book_id) on delete cascade,
    foreign key fk_book_lending_branch(branch_id) references library_prog(branch) on delete cascade,
    foreign key fk_book_lending_card(card_no) references cards(card_no) on delete cascade
);

补充说明

  • 如果你不想手动命名外键,也可以省略约束名,让MySQL自动生成唯一的约束名称,示例:
foreign key(book_id) references book(book_id) on delete cascade

这种写法同样可以解决重复键名的问题,不过显式命名约束更便于后续维护(比如修改或删除约束时能精准定位)。

内容的提问来源于stack exchange,提问作者prajwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 23:54:28