今天在一开发环境上维护时,发现 使用 psql 连接到数据库后,无法使用方向键查看历史命令,如下所示。
问题现象
psql 命令台无法使用方向键
1 |
-bash-3.2$ psql |
备注:方向键无法使用,非常不方便,这个与 readline 有关。
排查过程
检查系统
1 |
[root@skycac44 ~]# rpm -qa | grep readline |
备注:系统上已安装 readline。
检查 PostgreSQL 客户端
1 |
-bash-3.2$ pg_config --configure '--prefix=/usr/local/postgres' '--without-readline' |
备注: 以上命令显示编译 PostgreSQL 时的配置参数列表,上面果然没有安装 readline。
configure 时手册上的解释
without-readline
Prevents use of the Readline library (and libedit as well). This option disables command-line editing
and history in psql, so it is not recommended.
备注:手册上不建议禁用 readline。 对于已安装 readline 的 PostgreSQL 客户端,也有参数可以控制是否session 级禁用 readline。
测试
查看编译信息
1 |
[pg93@redhatB ~]$ pg_config --configure |
备注:这个是我笔记本上 9.3 的库,编译时已安装 readline。
psql 测试1: 启用 readline
1 |
[pg93@redhatB ~]$ psql |
备注:方向键滚动历史命令正常。
psql 测试2:session 级禁用 readline
1 |
[pg93@redhatB ~]$ psql --no-readline |
备注:psql 连接时加了参数“–no-readline”,设置后,方向键又抽风了,更进一步,TAB 补全功能也被禁用了。
总结
- 建议开启 readline 功能,便于数据库管理,维护。
- readline 功能与 psql 客户端相关,而与服务端无关。
原创文章,作者:kirin,如若转载,请注明出处:https://blog.ytso.com/tech/database/237971.html