Java postgresql函数“;idx“;在某些机器中找到,但在其他机器中找不到
下面是我正在使用Java postgresql函数“;idx“;在某些机器中找到,但在其他机器中找不到,java,postgresql,jdbc,prepared-statement,Java,Postgresql,Jdbc,Prepared Statement,下面是我正在使用PreparedStatement SELECT planner.udf_desc.* FROM planner.udf_desc WHERE id IN(3,2) ORDER BY idx(array[3,2], id); 我在plannerschema中有一个名为udf\u desc的表。 为了让它工作,我在数据库中安装了intarray扩展 create extension "intarray" 我正在使用linux机器。我在另外三台机器(都是linux)上进行了上述尝
PreparedStatement
SELECT planner.udf_desc.* FROM planner.udf_desc WHERE id IN(3,2) ORDER BY idx(array[3,2], id);
我在planner
schema中有一个名为udf\u 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功能在一台机器上工作,而在另一台机器上不工作。在AWS RDS上也有同样的问题。解决方案是删除扩展并重新创建它:
DROP EXTENSION intarray;
CREATE EXTENSION intarray;
您需要在Windows安装上运行
create extension intarray
,如下所示:well@a_horse_with_no_name我做了,我做了我在linux系统中所做的一切。或者你在错误的数据库中创建了扩展。或者可能在错误的模式中(我注意到您使用planner限定了表的名称。
…扩展和函数存在于特定的模式中,就像其他数据库对象(如表)一样;但是扩展有点特殊:它们可以在每个数据库中创建一次,但仍然在模式中).@a_horse_和_no_name我再次交叉检查了所有内容。问题是,无论我是否从一开始就重新安装所有内容,它都在某些计算机上工作。但在其他具有相同安装方法的计算机上不工作。目前我观察到的是,它在任何windows计算机上都不工作。如果你说99%的情况下,问题在于connectivity、 搜索路径和权限。我可以保证您的连接是正确的。可能是搜索路径或权限有问题。如果您能在这方面帮助我,请告诉我。