无法将值 NULL 插入列“id”、表“XXX”;列不允许空值。插入失败

Posted

技术标签:

【中文标题】无法将值 NULL 插入列“id”、表“XXX”;列不允许空值。插入失败【英文标题】:Cannot insert the value NULL into column 'id', table 'XXX'; column does not allow nulls. INSERT fails 【发布时间】:2017-01-20 05:56:45 【问题描述】:

我收到插入错误:

无法将值 NULL 插入列“id”、表“db.dbo.table”; 列不允许空值。插入失败

.

我检查了数据,我插入到“id”的列没有任何空值。 有什么建议吗?

【问题讨论】:

请提供 SQL 风格、表架构(定义)和插入语句。 【参考方案1】:

错误

列不允许空值

正在发生,因为您正在尝试插入具有NULLid 的数据,至少要插入一条记录。它与您尝试插入之前 列的状态无关。检查插入数据的来源并删除/替换 NULL 值,或更改 id 列以接受 NULL

【讨论】:

我检查了数据,没有一条记录在我与之匹配的列中为 NULL...我无法更改 id 列 您使用的是什么版本的 SQL 和/或语言?插入的数据中必须有NULL 我发现了一些 Null 但是当我这样做 column_id_to_insert = NULL 然后什么都没有出现 不能使用=运算符比较NULL,需要使用IS NULL,所以请改用column_id_to_insert IS NULL @PeterSun:如果要插入的行包含空值,则无法使用选择进行检查。 select 只看到 existing 行,但您要插入的行还不存在(而且您的错误显然与 INSERT 有关)【参考方案2】:

查看您的 SQL 表设计时,将“列属性”滚动到“标识规范”。在该下拉列表中,将“(是身份)”更改为是。此设置告诉表格自动增加 ID 字段。

【讨论】:

【参考方案3】:

Null 不是一个特定的值,而是表明您不知道该字段的值。这意味着,“价值未知”。如果该字段不可为 NULL(即,如果“UNKNOWN”是不允许的),则 INSERT 将不被允许。对于 ID 列尤其如此,它可能是 INDEXed —— 甚至可能是表的 PRIMARY KEY。有些数据库根本不允许在 INDEX(尤其是主索引)中使用 NULL。

【讨论】:

以上是关于无法将值 NULL 插入列“id”、表“XXX”;列不允许空值。插入失败的主要内容,如果未能解决你的问题,请参考以下文章

EF - 对于已创建的实体:无法将值 NULL 插入“Id”列、“Languages”表;列不允许空值

Entity Framework 6 GUID 作为主键:无法将值 NULL 插入列“Id”、表“FileStore”;列不允许空值

无法将值 NULL 插入列“TaskID”、表“TEAM.dbo.Task”;列不允许空语句已终止[重复]

SqlException:无法将值 NULL 插入列“CarId”、表“AutoServiceDb.dbo.ServiceOrders”;列不允许空值。插入失败

无法将值 NULL 插入列 CreationTime

首先来自数据库的代码 - 无法将值 NULL 插入列“Id”,但值实际上不为空