跳转到主要内容

22025 — invalid_escape_sequence

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

22025

速览

转义序列对具体消费方无效。固定路径区分 LIKE 的 ESCAPE 参数既非空也非单字符、LIKE pattern 以转义字符结束、正则翻译器的转义参数长度规则,以及格式错误的 \u/\U Unicode 转义。

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

代表性报文

代表性消费方使用以下首要文本和提示:

消费方/守卫 首要文本和提示
LIKE 或 SQL 正则翻译的转义长度 invalid escape string;HINT:Escape string must be empty or one character.
LIKE pattern 以转义符结尾 LIKE pattern must not end with escape character
扫描器发现格式错误的 Unicode 转义 invalid Unicode escape;HINT:Unicode escapes must be \uXXXX or \UXXXXXXXX.

含义

22025 由消费方自己的转义守卫发出。LIKE 要求 ESCAPE 字符串为空或一个字符,并拒绝以转义字符结尾的 pattern;SQL 正则翻译辅助函数对其转义参数也使用空字符串或单字符规则;核心扫描器对格式错误的 Unicode 转义给出 \uXXXX/\UXXXXXXXX 提示。这些情况不同于 22019 的转义字符语义和 2200C 的 SIMILAR 分隔符溢出;regexp_replace 的 option 或 start/occurrence 参数错误则是 22023 参数校验路径。

诊断

先确认消费方再修改反斜杠:LIKE ESCAPE 参数、LIKE pattern、SQL 正则翻译,还是扩展字符串字面量的 Unicode 扫描。检查转义值是否为空字符串或单字符、LIKE pattern 是否以转义符结尾,以及 Unicode 转义是否具备所需 \u/\U 长度。不要把所有正则替换或 SIMILAR 语法错误都叫作 22025,应以实际 SQLSTATE 和首要报文分类。

处理

按消费方要求提供转义字符串和 pattern,并保留有意使用的空字符串,不要将其理解为 SQL NULL。Unicode 语法错误应按扫描器要求使用 \uXXXX\UXXXXXXXX。如果 ERROR 发生在显式事务中,应先 ROLLBACK 或回滚到既有保存点再重试;自动提交可重试修正后的语句。

版本

锁定目录从 7.4 起记录该条件;本页固定源码路径为 PostgreSQL 18.6。未声称本页有自然运行观察。

220192200C22023

来源

LIKE 守卫在 src/backend/utils/adt/like_match.c#L159-165#L439-449;SQL 正则翻译的转义长度守卫见 src/backend/utils/adt/regexp.c#L793-805;格式错误的 Unicode 转义在 src/backend/parser/scan.l#L697-704。结构化证据记录保留确切首要报文、提示和消费方边界;本页未运行自然案例。