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

SQL插入语句触发Msg213错误:列值与表定义不匹配,求排查

排查INSERT语句的列不匹配错误(Msg 213)

咱们直接说问题根源:你的Users表一共定义了14个列,但你写的INSERT语句只提供了13个值,而且因为没指定要插入的列名,SQL Server会默认按表的列顺序去匹配,这就直接导致了列数和值的数量不匹配,触发了Msg 213错误。

另外要注意,UserID是自增主键(PK Identity 1,1),这个列的值是数据库自动生成的,不需要你手动插入。

给你两种可行的修复方案:

方案1:明确指定插入的列(推荐)

这种方法可读性强,就算后续表结构调整(比如新增列),也不容易出错。只需要把除了UserID之外的列名列出来,再对应传入值即可:

INSERT INTO Users (TypeID, Email, Password, LastName, FirstName, Street, Municipality, City, Phone, Mobile, Status, DateAdded, DateModified)
VALUES (2, 'phil@gmail.com', 'password', 'Reavis', 'Phil', 'Street', 'Municipality', 'City', '1234567', '12345678910', 'Active', '2018-09-09 08:00:00', '2018-01-01 09:00:00');

方案2:用DEFAULT占位自增列

如果不想写列名,可以在VALUES开头加DEFAULT,用来对应UserID的自增值(让数据库自动生成),这样值的数量就和列数匹配了:

INSERT INTO Users VALUES (DEFAULT, 2, 'phil@gmail.com', 'password', 'Reavis', 'Phil', 'Street', 'Municipality', 'City', '1234567', '12345678910', 'Active', '2018-09-09 08:00:00', '2018-01-01 09:00:00');

补充一句:平时写INSERT语句尽量用方案1,明确指定列名能避免很多因表结构变化带来的潜在问题,也更便于其他开发者理解代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:26:17