无法将值 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】:错误
列不允许空值
正在发生,因为您正在尝试插入具有NULL
列id
的数据,至少要插入一条记录。它与您尝试插入之前 列的状态无关。检查插入数据的来源并删除/替换 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”;列不允许空值。插入失败