Postgresql 9.5 语法错误
Postgresql 9.5 Syntax error
我在两台具有不同 postgres 版本的服务器上执行相同的 sql 脚本。第一个安装了 postgres 9.4.4(工作正常),另一个安装了 9.5(抛出异常)。
UPDATE archived_invoice SET encrypted_xml
= encrypt(xml::bytea, 'MySuperSecretKey'::bytea, 'aes-ecb/pad:pkcs')
异常:
Caused by: org.postgresql.util.PSQLException: ERROR: invalid input syntax for type bytea
SQL Status:22P02
这两个 postgresql 版本之间有什么区别吗?
如果您要转换为 bytea
的 text
包含无效转义序列,PostgreSQL 将向您抛出 ERROR: invalid input syntax for type bytea
:
# select '\i is not a valid escape sequence'::bytea;
ERROR: invalid input syntax for type bytea
LINE 1: select '\i is not a valid escape sequence'::bytea;
我猜您的 "xml" 列包含或可能包含一些反斜杠。这适用于 XML 和 text
列,但在转换为 bytea
.
时会出现问题
您需要转义反斜杠:
UPDATE archived_invoice SET encrypted_xml
= encrypt(
replace(xml, '\', '\')::bytea,
'MySuperSecretKey'::bytea,
'aes-ecb/pad:pkcs'
)
我在两台具有不同 postgres 版本的服务器上执行相同的 sql 脚本。第一个安装了 postgres 9.4.4(工作正常),另一个安装了 9.5(抛出异常)。
UPDATE archived_invoice SET encrypted_xml
= encrypt(xml::bytea, 'MySuperSecretKey'::bytea, 'aes-ecb/pad:pkcs')
异常:
Caused by: org.postgresql.util.PSQLException: ERROR: invalid input syntax for type bytea
SQL Status:22P02
这两个 postgresql 版本之间有什么区别吗?
如果您要转换为 bytea
的 text
包含无效转义序列,PostgreSQL 将向您抛出 ERROR: invalid input syntax for type bytea
:
# select '\i is not a valid escape sequence'::bytea;
ERROR: invalid input syntax for type bytea
LINE 1: select '\i is not a valid escape sequence'::bytea;
我猜您的 "xml" 列包含或可能包含一些反斜杠。这适用于 XML 和 text
列,但在转换为 bytea
.
您需要转义反斜杠:
UPDATE archived_invoice SET encrypted_xml
= encrypt(
replace(xml, '\', '\')::bytea,
'MySuperSecretKey'::bytea,
'aes-ecb/pad:pkcs'
)