pgAdmin:作业选项不可见

pgAdmin: Jobs option is invisible

我正在使用操作系统 window 7.

的 PostgreSQL 版本 9.3

我在 postgresql PgAdmin III 中显示选项作业时遇到问题。

以下是我试过的图片:

设置 pgAgent 作业后,我重新启动服务器和服务,然后:

有什么问题?

找到适用于 pgAdmin 1.20.0~beta2-1 (Debian Jessie 8.1) 的解决方案。

要显示作业节点,您需要使用 2 个强制参数值创建新的服务器连接:

  • 用户名:postgres
  • 维护数据库:postgres

我从一个论坛找到了答案,下面是应该做什么:

According to the code, the "pgAgent Jobs" node is displayed if the option is checked in the options dialog and if there is a table pga_job in the schema pgagent of the maintenance database. Moreover, the user used for the connection must have the USAGE privilege on the pgagent schema.

Source of the quote

我已将新模式添加到维护数据库并在该模式中添加了 pga_job table,但没有任何列,作业节点变得可见,但现在出现错误:

ERROR:  relation "pgagent.pga_jobclass" does not exist
LINE 1: ...s AS joblastresult   FROM pgagent.pga_job j JOIN  pgagent.pg...

出现此错误是因为创建架构并不能完全解决问题。之后,我在 pgagent 模式中创建了 4 个 table: 1.

CREATE TABLE pgagent.pga_job
(
  jclid integer NOT NULL,
  jobjclid integer NOT NULL,
  jobagentid integer NOT NULL,
  jlgstatus integer NOT NULL,
  jobid integer NOT NULL,
  jobname character varying(255) NOT NULL
)
WITH (
  OIDS=FALSE
);
ALTER TABLE pgagent.pga_job
  OWNER TO postgres;

2.

CREATE TABLE pgagent.pga_jobagent
(
  jagpid integer NOT NULL,
  jlgstatus integer NOT NULL
)
WITH (
OIDS=FALSE
);
ALTER TABLE pgagent.pga_jobagent
  OWNER TO postgres;

3.

CREATE TABLE pgagent.pga_jobclass
(
  jclid integer NOT NULL,
  jlgstatus integer NOT NULL
)
WITH (
OIDS=FALSE
);
ALTER TABLE pgagent.pga_jobclass
  OWNER TO postgres;

4.

CREATE TABLE pgagent.pga_joblog
(
  joblogid integer NOT NULL,
  jlgstatus integer NOT NULL,
  jlgjobid integer NOT NULL,
  jlgid integer NOT NULL
)
WITH (
OIDS=FALSE
);
ALTER TABLE pgagent.pga_joblog
  OWNER TO postgres;

问题解决了。

看来您在 PostgreSQL 9.3 中总共有 9 个数据库。从 9 开始,只有一个是 Maintenance DB。所以你必须通过右键单击服务器来创建新服务器,并且你必须将维护数据库作为你在其中执行 pgAgent.sql 文件的数据库。

之后只需启动该服务器,您就会获得作业节点。

希望这会有所帮助:)