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

MySQL外键设置失败求助:创建Invoices表遇errno:150约束错误

排查MySQL外键约束错误(Errno:150)的原因及解决办法

导致#1005 - 无法创建表table.Invoices (errno: 150 "Foreign key constraint is incorrectly formed")错误的核心原因是:

  • 被引用字段未设置主键或唯一索引:你的TermsCode表中,TermsCodeID仅标记了NOT NULL,但没有将其设为主键或添加唯一约束。MySQL要求外键引用的字段必须是被引用表的主键,或是带有唯一约束的字段,否则无法建立外键关联。

其他需要确认的点(你的代码中这些都没问题):

  • 字段类型与长度完全匹配:Invoices表的CustomerID(int)和Customers表的CustomersID(int)、Invoices的TermsCodeID(varchar(50))和TermsCode的TermsCodeID(varchar(50))类型一致,满足外键要求。
  • 建表顺序正确:先创建被引用的Customers和TermsCode表,再创建依赖它们的Invoices表,不会因被引用表不存在导致错误。

修正方案

修改TermsCode的建表语句,给TermsCodeID添加主键约束(推荐):

CREATE TABLE TermsCode (
    TermsCodeID varchar(50) NOT NULL,
    Description varchar(50),
    PRIMARY KEY (TermsCodeID)
);

如果不需要将TermsCodeID设为主键,也可以添加唯一索引:

CREATE TABLE TermsCode (
    TermsCodeID varchar(50) NOT NULL,
    Description varchar(50),
    UNIQUE KEY (TermsCodeID)
);

重新执行建表语句,即可成功创建Invoices表并建立外键约束。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 11:25:26