有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java postgresql函数“idx”在某些机器中找到,但在其他机器中找不到

下面是我正在执行的一个查询PreparedStatement

SELECT planner.udf_desc.* FROM planner.udf_desc WHERE id IN(3,2) ORDER BY idx(array[3,2], id);

planner模式中有一个名为udf_desc的表
为了让它工作,我在数据库中安装了intarray扩展

create extension "intarray"

我正在使用linux机器。我在另外三台机器(都是linux)上进行了上述尝试
但现在当我在windows机器上尝试同样的方法时。它不工作,我得到以下错误:

function idx(integer[], integer) does not exist

我在其他三台windows机器上试用过,但都不起作用
我在服务器控制台上打印了堆栈跟踪

18:01:40,505 ERROR [com.ers.dao.UdfDao] (default task-13) SELECT planner.udf_desc.* FROM planner.udf_desc WHERE id IN(2) ORDER BY idx(array[2], id)
18:01:40,517 ERROR [stderr] (default task-13) java.sql.SQLException: ERROR: function idx(integer[], integer) does not exist
18:01:40,517 ERROR [stderr] (default task-13)   Hint: No function matches the given name and argument types. You might need to add explicit type casts.
18:01:40,520 ERROR [stderr] (default task-13)   Position: 73 Query: SELECT planner.udf_desc.* FROM planner.udf_desc WHERE id IN(2) ORDER BY idx(array[2], id) Parameters: []
18:01:40,522 ERROR [stderr] (default task-13)   at org.apache.commons.dbutils.AbstractQueryRunner.rethrow(AbstractQueryRunner.java:392)
18:01:40,524 ERROR [stderr] (default task-13)   at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:351)
18:01:40,526 ERROR [stderr] (default task-13)   at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:289)

所有机器上的一切都是一样的,但是idx函数在一台机器上工作,而不是在另一台机器上工作


共 (1) 个答案

  1. # 1 楼答案

    在AWS RDS上也有同样的问题。解决方案是删除扩展并重新创建它:

    DROP EXTENSION intarray;
    CREATE EXTENSION intarray;