使用指定SQL语句时,FOREIGN KEY与REFERENCES为何报错?
外键关联报错原因及修正方案
核心语法错误
你的SQL语句存在两处致命语法结构问题:
- 表定义的闭合括号位置错误:在
PRIMARY KEY(id_menu)后面的)直接闭合了CREATE TABLE的主体,导致外键约束定义被排除在表结构之外,数据库无法识别这部分语法。 - 语句末尾多了一个多余的
),造成括号不匹配,触发语法解析错误。
额外潜在报错点
除了语法问题,还需确认以下两点,否则即使修正语法仍会报错:
- 关联的
kategori表必须已经存在,且id_kategori字段是该表的主键或唯一约束字段(外键必须关联到父表的唯一标识字段)。 menu表的id_kategori字段与kategori表的id_kategori字段类型、长度必须完全一致(你的语句中都是VARCHAR(50),这部分没问题,但如果父表字段类型不同会报错)。
修正后的SQL语句
CREATE TABLE menu( id_menu VARCHAR(50) NOT NULL, nama_menu VARCHAR(100), id_kategori VARCHAR(50), keterangan TEXT, harga DOUBLE(5,2), gambar VARCHAR(50), PRIMARY KEY(id_menu), FOREIGN KEY (id_kategori) REFERENCES kategori (id_kategori) ON UPDATE CASCADE ON DELETE CASCADE );
内容的提问来源于stack exchange,提问作者Siti Nurhidayah
相关产品推荐
相关产品推荐

