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

MySQL 5.7.20创建favorite_food表时遇1064语法错误求助

排查MySQL 5.7.20建表语法错误

嘿,这个语法错误的原因很明确——你的主键约束和外键约束之间缺少了一个分隔用的逗号!

MySQL在解析表级约束的时候,要求多个约束定义之间必须用逗号隔开。你看你的原语句:

CREATE TABLE favorite_food ( 
  person_id SMALLINT UNSIGNED, 
  food VARCHAR(20), 
  CONSTRAINT pk_favorite_food PRIMARY KEY (person_id, food) 
  CONSTRAINT fk_fav_food_person_id FOREIGN KEY (person_id) REFERENCES person (person_id) 
);

在CONSTRAINT pk_favorite_food PRIMARY KEY (person_id, food)这一行结束后,没有加逗号就直接写了下一个约束,MySQL解析器会把后面的CONSTRAINT当成前面主键约束的一部分,自然就报语法错误了。

修正后的正确建表语句

只需要在主键约束的结尾加上逗号即可:

CREATE TABLE favorite_food ( 
  person_id SMALLINT UNSIGNED, 
  food VARCHAR(20), 
  CONSTRAINT pk_favorite_food PRIMARY KEY (person_id, food),
  CONSTRAINT fk_fav_food_person_id FOREIGN KEY (person_id) REFERENCES person (person_id) 
);

额外小提示

  • 如果你后续还要添加更多表级约束(比如唯一约束),记得每个约束之间都用逗号分隔
  • MySQL 5.7.20完全支持这种显式命名约束的语法,只要格式正确就能正常执行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:34:56