SQL创建Supplier表及插入数据报错,Error 1136转1054求助
问题分析与解决方案
错误原因拆解
- Error Code: 1136:最初的列数不匹配,是因为
INSERT语句中值的顺序与指定字段顺序错位,且可能存在值数量与字段数量不一致的情况;调整后列数匹配,但字段值对应关系仍错误。 - Error Code: 1054:提示
supplierName列不存在,说明CREATE TABLE语句未成功执行(或执行时存在拼写错误),导致表结构不符合预期,后续的INSERT和SELECT操作自然失效。
修正后的完整SQL代码
-- 先删除已存在的错误表(如果有) DROP TABLE IF EXISTS Supplier; -- 创建供应商表,确保字段拼写与定义正确 CREATE TABLE Supplier( ID varchar(10) NOT NULL PRIMARY KEY, supplierName varchar(20), phoneNumber varchar(15), address varchar(50), -- 原长度15不足以存储完整地址,调整为50 size varchar(10) ); -- 插入数据,严格匹配字段顺序:ID, supplierName, phoneNumber, address, size INSERT INTO Supplier(ID, supplierName, phoneNumber, address, size) VALUES ('A100', 'Daryl', '57615692', 'Rose-Belle Rue 99', 'Small'), ('A101', 'Raquil', '57889958', 'Quatre-Bornes Chemin Ferre 82', 'Large'), ('A102', 'Yohan', '59864892', 'Flaq Casal 76', 'Medium'), ('A103', 'Hassan', '54863289', 'Nitro street 69', 'Small'), ('A104', 'Roger', '57894256', 'Turo Rue 420', 'Large'); -- 查询验证数据 SELECT * FROM Supplier;
关键修正点
- 修正
INSERT值顺序:将电话号码与地址的位置交换,确保每个值对应正确的字段。 - 扩展地址字段长度:原
varchar(15)会导致地址数据被截断,调整为varchar(50)满足存储需求。 - 添加表清理语句:先删除可能存在的错误结构表,再重新创建,确保表结构完全符合预期。
验证步骤
- 执行上述完整SQL代码,完成表重建与数据插入。
- 执行
SELECT * FROM Supplier;,若能正常返回所有供应商数据,则问题解决。
内容的提问来源于stack exchange,提问作者clown
相关产品推荐
相关产品推荐

