跳转到主要内容

22019 — invalid_escape_character

PostgreSQL SQLSTATE 22019 的来源与诊断参考。

速览

某个操作拒绝了它的转义参数。固定目录定义了 invalid_escape_character,但有限的 PostgreSQL 18.6 源码扫描没有找到可以安全绑定单一报文或严重级别的原生发出路径。

字段
SQLSTATE 22019
条件名 invalid_escape_character
状态 有效
已知存在于 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_INVALID_ESCAPE_CHARACTER
别名

含义

具体规则属于 ESCAPE 的消费者。PostgreSQL 的 LIKE 和 SIMILAR 文档允许一个字符的转义符,也允许用 ESCAPE '' 禁用转义,并特别说明这与 SQL 标准对零长度值的规定不同。其他消费者可能要求一个字符、拒绝某些字符,或有自己的空串规则。因此在没有发出路径时,不能用一条通用的长度或字符校验解释 22019

诊断

先确认消费者并阅读完整诊断,再修改值。检查转义表达式的解析类型和字符长度、值是否为空字符串,以及所选字符在该模式语言中是否有特殊含义。把 SQL 字符串字面量的引号处理与模式转义分开,并将本有限定义与 2200C 的 SIMILAR 分隔符语法、2200D 的无效字节区分开。

处理

遵循消费者文档规定的转义表示:消费者要求时提供有效的单字符,消费者明确用空字符串(ESCAPE ‘’)禁用转义时才使用这个支持的表示。必要时重新编码 SQL 字面量,然后在同一消费者中验证;不要把 LIKE 规则套到无关解析器上。

版本

锁定目录从 7.4 起记录该条件;固定源码覆盖 PostgreSQL 18.6。本次有限审阅没有确定精确的实现引入时间或原生发出路径。

2200C2200D

来源

  • 固定定义已在 errcodes.txt 中核对;本次有限 PostgreSQL 18.6 源码扫描没有解析出 ERRCODE_INVALID_ESCAPE_CHARACTER 的出现位置。
  • 同版模式匹配文档说明 LIKE 的单字符、默认和空转义规则,#L5724-L5830说明对应的 SIMILAR 规则。这是消费者规则,不是对 22019 发出函数的声明。

运行核验为 not_run;本页不宣称 primary 模板、严重级别或事务影响。结构化证据记录保留定义、文档范围和有限发出路径限制。