创建orders表执行SQL提示missing left parenthesis错误排查咨询
创建orders表触发missing left parenthesis报错排查
问题诱因
- 外键约束语法错误:原SQL最后一条外键定义写为
FOREIGN KEY product(product_id) REFERENCES product(product_id),不符合SQL语法规则。外键定义要求FOREIGN KEY关键字后必须紧跟左括号,包裹当前表的外键字段;此处多写了无效标识符product,数据库解析时在KEY后未匹配到预期的左括号,直接抛出缺少左括号的错误。 - 潜在风险点:执行建表语句前需确认两个前提,一是被关联的
customers、address、product表已提前创建,二是orders表中作为外键的customer_id、address_id、product_id字段,和对应主表关联字段的数据类型、字符集(字符串类型字段需校验)完全一致,否则会触发外键关联失败的后续报错。
修正后SQL代码
CREATE TABLE orders( order_id INT PRIMARY KEY NOT NULL, customer_id INT, amount INT, address_id VARCHAR(50), order_date DATE, product_id INT, quantity INT, FOREIGN KEY (customer_id) REFERENCES customers(customer_id), FOREIGN KEY (address_id) REFERENCES address(address_id), FOREIGN KEY (product_id) REFERENCES product(product_id) );
外键语法参考
标准的单列外键行级约束写法固定为:FOREIGN KEY (当前表外键字段名) REFERENCES 主表名(主表关联字段名)FOREIGN KEY关键字后不允许添加括号外的冗余字符、自定义别名;如果是多字段联合外键,只需在括号内按顺序写入多个字段名,用逗号分隔即可。
内容的提问来源于stack exchange,提问作者Syed Musab Pirzada
相关产品推荐
相关产品推荐

