百科 / 错误代码 / Class 22 数据异常
22025 invalid_escape_sequence
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
Escape string must be empty or one character.
LIKE pattern must not end with escape character
invalid escape string
Escape string must be empty or one character.
invalid Unicode escape
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。未声称本页有自然运行观察。
来源
- 上游源码 src/backend/utils/errcodes.txt 第 182 行
- 上游源码 src/backend/utils/adt/like_match.c 第 439 行
- 上游源码 src/backend/utils/adt/like_match.c 第 159 行
- 上游源码 src/backend/utils/adt/regexp.c 第 793 行
- 上游源码 src/backend/parser/scan.l 第 697 行
证据
断言
每条断言都写明了是怎么核实的,以及它不覆盖什么。这一层是核验时留下的原始英文记录,照原样呈现,未经翻译。
-
22025 is invalid_escape_sequence in SQLSTATE Class 22
-
Fixed PostgreSQL 18.6 LIKE, SQL regular-expression translation, and core scanner paths bind distinct escape-length, trailing-pattern, and malformed-Unicode guards.
-
The locked catalogue records 22025 from 7.4 without proving an exact implementation introduction date.
-
SIMILAR separator overflow and regexp_replace parameter validation use different SQLSTATE paths (2200C/22023) and are not folded into 22025.
同类错误代码
Class 22 数据异常 下的其他成员。
22000data_exception22001string_data_right_truncation22002null_value_no_indicator_parameter22003numeric_value_out_of_range22004null_value_not_allowed22005error_in_assignment22007invalid_datetime_format22008datetime_field_overflow22009invalid_time_zone_displacement_value2200Bescape_character_conflict2200Cinvalid_use_of_escape_character2200Dinvalid_escape_octet2200Fzero_length_character_string2200Gmost_specific_type_mismatch2200Hsequence_generator_limit_exceeded2200Lnot_an_xml_document2200Minvalid_xml_document2200Ninvalid_xml_content2200Sinvalid_xml_comment2200Tinvalid_xml_processing_instruction22010invalid_indicator_parameter_value22011substring_error22012division_by_zero22013invalid_preceding_or_following_size22014invalid_argument_for_ntile_function22015interval_field_overflow22016invalid_argument_for_nth_value_function22018invalid_character_value_for_cast22019invalid_escape_character2201Binvalid_regular_expression2201Einvalid_argument_for_logarithm2201Finvalid_argument_for_power_function2201Ginvalid_argument_for_width_bucket_function2201Winvalid_row_count_in_limit_clause2201Xinvalid_row_count_in_result_offset_clause22021character_not_in_repertoire22022indicator_overflow22023invalid_parameter_value22024unterminated_c_string22026string_data_length_mismatch22027trim_error2202Earray_subscript_error2202Ginvalid_tablesample_repeat2202Hinvalid_tablesample_argument22030duplicate_json_object_key_value22031invalid_argument_for_sql_json_datetime_function22032invalid_json_text22033invalid_sql_json_subscript22034more_than_one_sql_json_item22035no_sql_json_item22036non_numeric_sql_json_item22037non_unique_keys_in_a_json_object22038singleton_sql_json_item_required22039sql_json_array_not_found2203Asql_json_member_not_found2203Bsql_json_number_not_found2203Csql_json_object_not_found2203Dtoo_many_json_array_elements2203Etoo_many_json_object_members2203Fsql_json_scalar_required2203Gsql_json_item_cannot_be_cast_to_target_type22P01floating_point_exception22P02invalid_text_representation22P03invalid_binary_representation22P04bad_copy_file_format22P05untranslatable_character22P06nonstandard_use_of_escape_character