PostgreSQL连接拒绝需检查服务状态、listen_addresses配置及pg_hba.conf规则;Redis禁用KEYS等高危命令,应改用SCAN;Query History全局共享,切换数据库需手动清空输入框;中文乱码因客户端未正确协商UTF-8编码。

Database Client 连 PostgreSQL 时连不上,connection refused 怎么办
多数情况不是插件问题,而是 PostgreSQL 服务根本没起来,或监听配置不对。
检查这三件事:
- 确认
pg_ctl status或systemctl is-active postgresql显示服务正在运行 - 查
postgresql.conf中listen_addresses是否包含'localhost'(不是'127.0.0.1'就可能漏掉 IPv6 回环) - 看
pg_hba.conf里有没有匹配的行,比如:host all all 127.0.0.1/32 md5—— 缺这一行,认证直接被拒
插件里填的 host 建议统一用 localhost,避免 DNS 解析或 IPv4/IPv6 混用导致连接超时。
Redis 连接成功但执行 KEYS * 报错 ERR unknown command
Database Client 插件对 Redis 的支持是「只读命令优先」,很多管理类命令默认被禁用,尤其是 KEYS、FLUSHDB 这类高危操作。
解决办法只有两个:
- 改用
SCAN 0 MATCH * COUNT 1000—— 它是游标式遍历,插件允许,也更安全 - 如果非要用
KEYS,得确认 Redis 配置里没开启rename-command KEYS "",否则命令名已被抹掉
注意:插件不支持 Redis Cluster 模式,连上单节点后执行 CLUSTER NODES 会报错,这不是 bug,是设计限制。
同一个插件里切 PostgreSQL 和 Redis,为什么切换后查询历史不隔离
Database Client 的「Query History」是全局的,不按数据库类型分组。你刚在 PostgreSQL 里写了 SELECT now(),切到 Redis 后点历史记录,它仍会把那条 SQL 塞进 Redis 输入框 —— 然后必然报错。
实际应对方式很简单:
- 每次切换数据库前,手动清空输入框,别依赖历史记录补全
- 给不同连接起明确名字,比如
pg-local-dev、redis-cache-staging,靠名字快速识别上下文 - 不要把 PostgreSQL 的
.sql文件拖进 Redis 标签页执行 —— 插件不会拦截,但服务器会立刻返回语法错误
这个设计不是疏忽,是插件把「连接」和「查询会话」当成两个独立维度处理的。
中文字段查出来是 u4f60u597d,怎么让 Database Client 正确显示
这是 PostgreSQL 返回了 UTF-8 字节流,但插件没做字符解码,直接当原始字节转义输出了。Redis 同样会出现 "你好" 这种。
关键不在插件设置,而在数据库连接参数:
- PostgreSQL 连接字符串末尾加上
&client_encoding=utf8 - Redis 不涉及编码参数,但如果你存的是 JSON 字符串,确保写入时用了
SET mykey '{"name":"你好"}'而不是SET mykey "{"name":"\u4f60\u597d"}"
插件本身不提供「自动 Unicode 解码」开关,它信任数据库返回的内容编码。所以乱码根源永远在服务端连接协商阶段,不在客户端渲染。
别指望右键菜单里点「格式化 JSON」能救回来 —— 那只是对已有的字符串做解析,而 u 开头的文本此时还没被识别成合法 JSON。











