MySQL报错1054提示'field list'存在未知列'London'问题排查
报错产生原因
- 直接触发1054错误的核心原因:插入语句中
London两侧使用的是中文弯引号(‘’),SQL语法要求字符串值必须使用英文单引号(')包裹。数据库无法识别中文引号包裹的内容为字符串值,会将其误判为字段名,因此抛出“找不到London字段”的报错。 - 额外存在的语法缺陷:
CREATE TABLE语句定义完全部字段后,缺少闭合的右括号),且建表语句末尾缺少分号;和后续插入语句做分隔,即使引号问题修复也会触发语法报错。
修正后的完整可运行SQL
CREATE TABLE VanWinkleEmployee ( EmployeeID int, Reservation varchar(50), Checkin int, Checkout int, TotalDays int, Location varchar(50), Deposit int, Rate int, Discount int, ExtraCharges int, Reimbursement int ); INSERT INTO VanWinkleEmployee VALUES (104, null, null, null, 4, 'London', 20, 35, 15, null, null ), (105, null, null, null, null, 'London', null, null, null, null, null );
可选优化建议
- 编写INSERT语句时建议显式指定插入的字段列表,避免后续表字段顺序调整后插入数据错位,也更易排查问题,示例如下:
INSERT INTO VanWinkleEmployee (EmployeeID, Reservation, Checkin, Checkout, TotalDays, Location, Deposit, Rate, Discount, ExtraCharges, Reimbursement) VALUES (104, null, null, null, 4, 'London', 20, 35, 15, null, null );
内容的提问来源于stack exchange,提问作者Steve Wong
相关产品推荐
相关产品推荐

