我正试图将abytea
作为值存储在hstore
中,并不断收到以下错误:
function hstore(unknown, bytea) does not exist
以下是我尝试过的:
UPDATE users set store = store || hstore('key1', pgp_pub_encrypt('testval',dearmor('xxxx')));
最佳答案
我想在hstore中存储一个bytea作为值
如果没有某种编码,bytea
无法安全地存储在hstore
中,因为hstore
在当前文本编码中存储为文本,但是bytea
没有文本编码,并且可能包含文本字符串中不合法的空字节。
因此,您需要将bytea编码为hex、base64或其他某种形式,使其在当前编码中成为有效文本。
最简单的方法是将其转换为text
,但我建议使用encode
和decode
到/从base64。这种编码比PostgreSQL中用于text
文本表示的hex
或bytea
编码更为紧凑,而且也与bytea_output
设置的值无关。
例如
UPDATE users
SET store = store
|| hstore('key1', encode( pgp_pub_encrypt('testval',dearmor('xxxx'))), 'base64')
WHERE ... ;
关于sql - Postgres:如何将BYtea作为值存储在hstore中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29834772/