生产环境PostgreSQL以postgres登录无法查看u_boards表数据求助
问题解决步骤
切换到u_boards用户的两种方式
1. 外部终端直接登录
退出当前psql会话,在系统终端执行:
psql -U u_boards -d django_boards
按提示输入u_boards用户的数据库密码即可登录。
2. 现有psql会话内切换
无需退出当前会话,执行SQL命令切换角色:
SET ROLE u_boards;
执行后后续操作将以u_boards权限执行。
查询无结果的排查要点
- 验证权限
先检查postgres用户是否有目标表的查询权限:
SELECT has_table_privilege('postgres', 'scaffoldapp_photos', 'select');
- 返回
t:说明有权限,问题不在权限 - 返回
f:需要给postgres授权,执行:
-- 单表授权 GRANT SELECT ON scaffoldapp_photos TO postgres; -- 或者授权public下所有表 GRANT SELECT ON ALL TABLES IN SCHEMA public TO postgres;
- 确认表存在且查询语句正确
执行\dt public.*查看所有public schema下的表,确认scaffoldapp_photos存在;查询语句必须以分号结尾:
SELECT * FROM scaffoldapp_photos;
- 检查事务状态
如果之前执行过未提交的写操作(比如INSERT/UPDATE后没COMMIT),可能导致查询看不到最新数据,执行:
COMMIT;
再重新查询。
内容的提问来源于stack exchange,提问作者Alvar
相关产品推荐
相关产品推荐

