39004 — null_value_not_allowed
PostgreSQL SQLSTATE 39004 的源码与诊断参考。
39004
速览
39004 是 SQL Routine Exception 类中的 null_value_not_allowed。本页只根据固定定义和有界源码扫描说明定位方法,不把条件名扩展成未经证实的具体调用。
| 字段 | 值 |
|---|---|
| SQLSTATE | 39004 |
| 条件名 | null_value_not_allowed |
| 状态 | 有效 |
| 已知存在于 | 7.4 |
| 锁定快照 | 9.0.23, 9.1.24, 9.2.24, 9.3.25, 9.4.26, 9.5.25, 9.6.24, 10.23, 11.22, 12.22, 13.23, 14.24, 15.19, 16.15, 17.11, 18.6, 19beta3 |
| 宏 | ERRCODE_E_R_I_E_NULL_VALUE_NOT_ALLOWED |
| 别名 | — |
含义
它表示某个 routine、扩展或其调用边界拒绝了不允许的 NULL。固定 PostgreSQL 18.6 调用归档没有解析出该条件的报告路径,因此不能仅凭 SQLSTATE 判断是参数、返回值、触发器还是其他 routine 约束。
诊断
先保存完整 ErrorResponse 的 message、detail、hint、schema、table、column、routine 与位置字段,再按实际 routine 或扩展实现搜索 ERRCODE_E_R_I_E_NULL_VALUE_NOT_ALLOWED。若代码来自客户端封装或扩展,要检查它实际选择的 SQLSTATE;本页的有界扫描不能替代对部署版本的 wrapper 源码检查。
处置
修正诊断中指明的 NULL 输入或 routine 契约,并重新核对调用方与实现方的边界。没有具体报告该码的路径时,不要凭条件名改事务策略、盲目重试或声称某个 SQL 语句必然触发它。
版本
锁定目录从 7.4 记录该条件,并在列出的正式快照及 19beta3 中出现;这只是定义存在边界,未确认精确引入实现。
相关条件
来源
详见结构化的证据记录,其中列出固定源码链接、消息模板与范围限制。