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

MySQL创建含外键表时遇1064语法错误,求排查解决

解决MySQL/MariaDB创建含外键表的1064语法错误

我一眼就定位到问题啦,你的SQL脚本里主键定义的语法有误,这直接导致了MariaDB解析器报错。

错误根源

你写的主键定义是:

PRIMARY KEY KD_AUTO

在MySQL和MariaDB中,不管是单个列还是多个列作为主键,都必须把列名放在圆括号内。正确的写法应该是:

PRIMARY KEY (KD_AUTO)

这个语法错误让解析器无法正确识别后续的外键定义语句,所以报错指向了外键行,但实际问题出在前面的主键定义上。

修正后的完整SQL脚本

CREATE TABLE tbl_mt_kuliah (
    KD_AUTO INT(4) NOT NULL AUTO_INCREMENT,
    NIM INT(10) NOT NULL,
    KD_MATA_KULIAH INT(4) NOT NULL,
    RUANG VARCHAR(4) NOT NULL,
    KD_DOSEN INT(4) NOT NULL,
    JAM TIME NOT NULL,
    HARI DATE NOT NULL,
    TH_AJARAN YEAR NOT NULL,
    SMESTER INT(2) NOT NULL,
    PRIMARY KEY (KD_AUTO),
    FOREIGN KEY FK_MATKUL(KD_MATA_KULIAH) REFERENCES mt_kuliah(KD_MATA_KULIAH),
    FOREIGN KEY FK_MHS(NIM) REFERENCES tbl_mahasiswa(NIM),
    FOREIGN KEY FK_DOSEN(KD_DOSEN) REFERENCES tbl_dosen(KD_DOSEN)
);

额外注意事项

  • 确保被引用的表(mt_kuliah、tbl_mahasiswa、tbl_dosen)已经提前创建,不存在的话外键会创建失败。
  • 被引用的列(比如mt_kuliah.KD_MATA_KULIAH)必须是对应表的主键或唯一约束列,否则外键关联不成立。
  • 确认当前表的外键列和被引用列的数据类型完全一致(比如都是INT(4)),数据类型不匹配也会导致外键创建失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:06:30