You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PostgreSQL Anonymizer时遭遇双引号转义错误求助

PostgreSQL Anonymizer 执行anon.anonymize_database()时出现双引号转义错误

操作步骤

  • 步骤1:设置字段掩码规则
    SECURITY LABEL FOR anon ON COLUMN "Users"."Email" IS 'MASKED WITH FUNCTION anon.fake_email()';
    
  • 步骤2:执行数据库匿名化操作
    SELECT anon.anonymize_database();
    

错误信息

执行步骤2后触发语法错误,具体报错如下:

ERROR: syntax error at or near "Email"
LINE 1: UPDATE public. "Users" SET "\"Email\"" = CAST (anon.fake_email...
                                      ^

QUERY: UPDATE public. "Users" SET "\"Email\"" = CAST (anon.fake_email() AS text)
CONTEXT: SQL function "anonymize_database" statement 1

环境信息

  • Ubuntu 22.04
  • PostgreSQL 15.10
  • postgresql_anonymizer_15

解决方法

这个错误是由于anon.anonymize_database()函数在生成UPDATE语句时,对已用双引号包裹的列名进行了重复转义,导致列名变成"\"Email\"",违反SQL语法规则。可通过以下方式解决:

  1. 简化安全标签语句(推荐)
    如果表名和列名不是大小写敏感或包含特殊字符,去掉双引号重新执行步骤1:
SECURITY LABEL FOR anon ON COLUMN Users.Email IS 'MASKED WITH FUNCTION anon.fake_email()';

之后再调用anon.anonymize_database()即可正常执行。

  1. 手动执行UPDATE语句替代自动函数
    如果必须保留双引号(比如表/列名是大小写混合),跳过anon.anonymize_database(),直接手动执行匿名化更新:
UPDATE public."Users" SET "Email" = CAST(anon.fake_email() AS text);
  1. 升级postgresql_anonymizer版本
    该问题可能是特定版本的已知bug,建议升级到最新稳定版的postgresql_anonymizer,新版本通常会修复这类转义逻辑问题。

内容的提问来源于stack exchange,提问作者haxkd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 13:53:20