我正在尝试使用查询查询基础数据库的复制状态:
em.createNativeQuery("SELECT application_name, backend_start, state, cast(write_lag as text) FROM pg_stat_replication;").getResultList();
不幸的是,除application_name
外的所有列均返回null。即使我只跑
em.createNativeQuery("SELECT backend_start FROM pg_stat_replication;").getResultList();
我得到一个空结果。如果我在postgres命令行客户端中运行相同的查询,则会得到有意义的结果:
dbname=# select backend_start from pg_stat_replication;
backend_start
-------------------------------
2018-10-16 09:01:58.262578+02
(1 row)
我正在将Spring-boot 1.2.6与hibernate和PostgreSQL 10.5结合使用。
我该怎么做才能得到该查询的结果?
答案 0 :(得分:0)
刚发布后,我意识到我在CLI和Java中使用了不同的用户。显然,用户需要是超级用户或具有pg_read_all_stats默认角色。像这样:
GRANT pg_read_all_stats TO user;