psql交互模式停止自动打印SQL错误,如何恢复该功能?
解决psql交互模式不自动打印SQL执行错误的问题
排查方向1:检查ON_ERROR_STOP配置
如果ON_ERROR_STOP被设为on,可能会抑制交互模式下的错误输出。先执行命令确认当前值:
\echo :ON_ERROR_STOP
如果返回on,执行\set ON_ERROR_STOP off恢复默认,之后测试错误语句是否正常输出提示。
排查方向2:检查CLIENT_MIN_MESSAGES日志级别
这个参数控制psql接收的最低日志级别,若被改成高于ERROR的级别(比如FATAL),普通错误就不会显示。执行以下命令查看当前设置:
SHOW client_min_messages;
若结果不是error,执行修改命令:
SET client_min_messages TO error;
如果要永久生效,把这条配置加到~/.psqlrc文件里即可。
排查方向3:重启psql并排除启动参数干扰
有时候启动psql时误加了-q(安静模式)这类参数,会影响输出。直接用基础命令重新连接远程库:
psql -h <远程主机地址> -U <用户名> -d <数据库名>
连接后测试错误语句,看是否恢复自动打印错误。
排查方向4:检查远程服务器的log_min_messages配置
远程PG服务器的这个参数如果设置过高,也可能影响返回给客户端的错误信息。执行命令查看服务器端配置:
SHOW log_min_messages;
如果值高于error,需要服务器管理员修改postgresql.conf里的log_min_messages为error,再重启服务。
排查方向5:重置psql到默认配置状态
如果以上方法都没用,启动psql时跳过本地配置文件,排除隐藏配置干扰:
psql --no-psqlrc -h <远程主机地址> -U <用户名> -d <数据库名>
在这个干净环境下测试错误语句,若正常输出,说明~/.psqlrc里有隐藏问题,逐行排查文件内容即可。
内容的提问来源于stack exchange,提问作者Jan Hrcek
相关产品推荐
相关产品推荐

