如何解决Postgres 和 bytea 列看起来很奇怪
我转储了一个数据库并将其导入到另一台服务器中。其中一个表有一个 bytea 列并且只有一行数据。在原始服务器上,如果我 SELECT * FROM users;
,它显示的正确值是 @.
- 但是,当我在第二台服务器上执行相同的 select 语句时,我得到 \x402e
相同的字段.我试图将我的头环绕在这种列类型上,但它超出了我的头脑。为什么它会在一台服务器上显示为转义字符串而不是另一台服务器?两台服务器都运行 Pg11,我正在通过 psql 访问它们。
原始服务器:
=# \d+ users
Table "public.users"
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
-----------+------------------------+-----------+----------+-----------------------------------+----------+--------------+-------------
id | integer | | not null | nextval('users_id_seq'::regclass) | plain | |
priority | integer | | not null | 7 | plain | |
policy_id | integer | | not null | 1 | plain | |
email | bytea | | not null | | extended | |
fullname | character varying(255) | | | NULL::character varying | extended | |
=# SELECT * FROM users;
id | priority | policy_id | email | fullname
----+----------+-----------+-------+----------
1 | 0 | 1 | @. |
(1 row)
辅助服务器:
=> \d+ users
Table "public.users"
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
-----------+------------------------+-----------+----------+-----------------------------------+----------+--------------+-------------
id | integer | | not null | nextval('users_id_seq'::regclass) | plain | |
priority | integer | | not null | 7 | plain | |
policy_id | integer | | not null | 1 | plain | |
email | bytea | | not null | | extended | |
fullname | character varying(255) | | | NULL::character varying | extended | |
=> SELECT * FROM users;
id | priority | policy_id | email | fullname
----+----------+-----------+--------+----------
4 | 0 | 1 | \x402e |
(1 row)
解决方法
set bytea_output to hex;
select '@.'::bytea;
┌────────┐
│ bytea │
├────────┤
│ \x402e │
└────────┘
set bytea_output to escape;
select '@.'::bytea;
┌───────┐
│ bytea │
├───────┤
│ @. │
└───────┘
您的服务器似乎有不同的设置。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。