我正试图将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,但我建议使用encodedecode到/从base64。这种编码比PostgreSQL中用于text文本表示的hexbytea编码更为紧凑,而且也与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/

10-10 14:16