选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

百科 / 错误代码 / Class 22 数据异常

22025 invalid_escape_sequence

ERROR 源码确认 参考 未实测

类别
Class 22 数据异常
严重等级
ERROR
条件名
invalid_escape_sequence
宏名称
ERRCODE_INVALID_ESCAPE_SEQUENCE
启用版本
7.4
状态
活跃

版本覆盖

速览

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

代表性报文

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

消费方/守卫 首要文本和提示
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.

报文模板

源码里的格式串,不是某一次运行的输出。%s 之类是占位符,实际报文会填入对象名与取值。适用范围一栏是核验时留下的原始英文记录,未经翻译。

主消息 invalid escape string
HINT Escape string must be empty or one character.

来源:src/backend/utils/adt/like_match.c @ REL_18_6

主消息 LIKE pattern must not end with escape character

来源:src/backend/utils/adt/like_match.c @ REL_18_6

主消息 invalid escape string
HINT Escape string must be empty or one character.

来源:src/backend/utils/adt/regexp.c @ REL_18_6

主消息 invalid Unicode escape
HINT Unicode escapes must be \uXXXX or \UXXXXXXXX.

来源:src/backend/parser/scan.l @ REL_18_6

含义

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。未声称本页有自然运行观察。

来源

证据

断言

每条断言都写明了是怎么核实的,以及它不覆盖什么。这一层是核验时留下的原始英文记录,照原样呈现,未经翻译。

同类错误代码

Class 22 数据异常 下的其他成员。