与pgAdmin III连接时,函数array_agg(text)不是唯一的

Dan*_*ski 3 postgresql pgadmin

当我使用pgAdmin III(1.22.2)连接到PostgreSQL数据库时,出现此错误:

ERROR:  function array_agg(text) is not unique
LINE 5: (SELECT array_agg(label) FROM pg_shseclabel sl1 WHERE sl1.ob...
                 ^
HINT:  Could not choose a best candidate function. You might need to add explicit type casts.
Run Code Online (Sandbox Code Playgroud)

数据库服务器是PostgreSQL 9.6。

pgAdmin的相同实例可以与运行PostgreSQL 9.0版本的数据库一起正常工作。

我该如何解决这个问题?

Dan*_*ski 6

我发现问题是由9.0到9.6的迁移引起的。

使用psql登录数据库并运行\df array_agg。这是在9.0中的外观:

db=# \df array_agg
                           List of functions
   Schema   |   Name    | Result data type | Argument data types | Type 
------------+-----------+------------------+---------------------+------
 pg_catalog | array_agg | anyarray         | anyelement          | agg
(1 row)
Run Code Online (Sandbox Code Playgroud)

在9.6中:

db=# \df array_agg
                           List of functions
   Schema   |   Name    | Result data type | Argument data types | Type 
------------+-----------+------------------+---------------------+------
 pg_catalog | array_agg | anyarray         | anyarray            | agg
 pg_catalog | array_agg | anyarray         | anynonarray         | agg
(2 rows)
Run Code Online (Sandbox Code Playgroud)

但是,当我\df array_agg在服务器上运行时,我得到:

db=> \df array_agg
                                Lista funkcji
  Schemat   |   Nazwa   | Typ danych wyniku | Typy danych argumentów |  Typ  
------------+-----------+-------------------+------------------------+-------
 pg_catalog | array_agg | anyarray          | anyarray               | agreg
 pg_catalog | array_agg | anyarray          | anynonarray            | agreg
 public     | array_agg | anyarray          | anyelement             | agreg
(3 rows)
Run Code Online (Sandbox Code Playgroud)

如前所述在这里,它可以通过固定的:

DROP AGGREGATE public.array_agg(anyelement);
Run Code Online (Sandbox Code Playgroud)