ORA-01400: cannot insert NULL into (column)(无法将 NULL 插入(列))
Oracle含义
向带有 NOT NULL 约束的列插入或设置了 NULL 值。必填字段不能为空。
原因
INSERT 中未为必填列提供值、UPDATE 将该列设为 NULL、该列未定义 DEFAULT,或子查询/应用传来空值。
解决方法
为错误消息中指出的列提供有效值。为该列定义合理的默认值:ALTER TABLE my_table MODIFY (my_column DEFAULT 0);(DEFAULT 仅在 INSERT 中完全省略该列时生效;对于显式发送的 NULL 值,使用 12c+ 的 DEFAULT ON NULL:ALTER TABLE my_table MODIFY (my_column DEFAULT ON NULL 0);)如果该规则并非真正必需,删除约束:ALTER TABLE my_table MODIFY (my_column NULL); 在发送前于应用中校验空值。
同一数据库的其他条目
- library cache lock等待:library cache 对象句柄争用(解析/DDL 串行化)
- ORA-00604error occurred at recursive SQL level(递归 SQL 级别出错)
- ORA-01438value larger than specified precision allowed for this column(值大于此列允许的指定精度)
- ORA-02291integrity constraint violated - parent key not found(违反完整约束条件 - 未找到父项关键字)
- ORA-02292integrity constraint violated - child record found(违反完整约束条件 - 已找到子记录)
- ORA-00979not a GROUP BY expression(不是 GROUP BY 表达式)
- ORA-00918column ambiguously defined(列定义不明确)