Postgres 和 bytea 列看起来很奇怪
Postgres and bytea columns appearing weird
我转储了一个数据库并将其导入到不同的服务器。其中一个表有一个 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 │
├───────┤
│ @. │
└───────┘
您的服务器似乎有不同的设置。
我转储了一个数据库并将其导入到不同的服务器。其中一个表有一个 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 │
├───────┤
│ @. │
└───────┘
您的服务器似乎有不同的设置。