列名或提供的值的数量与表定义不匹配。为啥?

Posted

技术标签:

【中文标题】列名或提供的值的数量与表定义不匹配。为啥?【英文标题】:Column name or number of supplied values does not match table definition. Why?列名或提供的值的数量与表定义不匹配。为什么? 【发布时间】:2014-09-22 04:44:54 【问题描述】:

我错过了什么?

create table Diver(
diver_number int  primary key check(diver_number>0) not null,
first_name char(30) not null,
last_name char(30) not null,
fullname AS first_name+' '+last_name,
bithdate date not null,
email nchar(100) not null,
diver_password  char(8) not null check(Len(diver_password) = 8 
   AND diver_password not like('%[^a-z0-9]%')),
diver_signature nchar(200) not null,
signature_date date not null,
old_diving_diaries nchar(200))


insert into Diver VALUES('1111','Dana','shwartz','1966/04/11','danas@gmail.com','dana1234','http://www.google.co.il','')

我收到此错误: 列名或提供的值数与表定义不匹配。 为什么?

【问题讨论】:

因为您的表有 10 列而您的查询有 8 列? 【参考方案1】:

values 和 data_types 的个数必须相同。

VALUES('1111','Dana','shwartz','1966/04/11','danas@gmail.com','dana1234','http://www.google.co.il','ds2016','sdd1','odd1')

需要传递 10 个值。现在它必须运行。

【讨论】:

【参考方案2】:

你想念 old_diving_diaries。 您需要将值更改为

VALUES('1111','Dana','shwartz','1966/04/11','danas@gmail.com','dana1234','http://www.google.co.il','',
'') <-- this

由于计算列,您只需要 9 个数据。

【讨论】:

【参考方案3】:

是的,错误本身就说明了一切。您正在尝试将 8 个值插入到具有 10 列的表中。

考虑列出要显式插入的列名

insert into Diver (column names here)
VALUES('1111','Dana','shwartz','1966/04/11','danas@gmail.com','dana1234','http://www.google.co.il','')

【讨论】:

当然。没看到。

以上是关于列名或提供的值的数量与表定义不匹配。为啥?的主要内容,如果未能解决你的问题,请参考以下文章

SQL 列名或提供的值的数量与表定义不匹配

请任何人清除错误:列名或提供的值的数量与表定义不匹配

Dapper ExecuteAsync 得到一个 SQLException:列名或提供的值的数量与表定义不匹配

获取错误列名称或提供的值的数量与表定义不匹配

列名或提供的值的数量与更新时的表定义不匹配

列名或提供的值的数量与存储过程中的表定义不匹配