Skip to content

错误速查表 ​

连接错误 ​

错误原因解决方案
connection refused服务未启动或端口不对检查 systemctl status postgresql
no pg_hba.conf entry认证配置不允许连接修改 pg_hba.conf,添加客户端 IP
password authentication failed密码错误检查用户名密码
too many connections连接数已满增大 max_connections 或使用连接池
database does not exist数据库不存在检查数据库名

语法错误 ​

错误原因解决方案
syntax error at or nearSQL 语法错误检查 SQL 语法
column does not exist列名不存在检查表结构 \d table
relation does not exist表名不存在检查表名和 schema
type does not exist类型不存在检查类型名
function does not exist函数不存在检查函数名和参数类型

约束错误 ​

错误原因解决方案
duplicate key value violates unique constraint唯一约束冲突检查数据或使用 ON CONFLICT
violates foreign key constraint外键约束冲突先插入被引用表的数据
violates not-null constraintNOT NULL 约束冲突提供非空值
violates check constraintCHECK 约束冲突检查数据是否满足条件
permission denied权限不足GRANT 授权

锁相关错误 ​

错误原因解决方案
deadlock detected死锁固定加锁顺序,缩短事务
canceling statement due to lock timeout锁等待超时增大 lock_timeout
canceling statement due to statement timeout语句超时增大 statement_timeout

资源错误 ​

错误原因解决方案
out of memory内存不足减小 work_mem 或增大服务器内存
could not extend file磁盘空间不足清理磁盘空间
too many open files文件描述符不足增大 ulimit -n

复制错误 ​

错误原因解决方案
replication slot is active复制槽被占用检查复制槽状态
WAL file not foundWAL 文件被清理使用复制槽防止 WAL 被清理
could not connect to primary无法连接主库检查网络和认证配置

常用排查命令 ​

sql
-- 查看当前活动连接
SELECT pid, usename, state, query FROM pg_stat_activity;

-- 查看锁等待
SELECT * FROM pg_locks WHERE NOT granted;

-- 终止长时间运行的查询
SELECT pg_terminate_backend(pid) FROM pg_stat_activity 
WHERE state = 'active' AND now() - query_start > interval '5 minutes';

-- 查看表大小
SELECT pg_size_pretty(pg_total_relation_size('table_name'));

-- 查看数据库大小
SELECT datname, pg_size_pretty(pg_database_size(datname)) FROM pg_database;

Released under the MIT License.