我尝试在 Ubuntu 16.04 中为 postgesql 9.6 安装 pljava,但它失败并出现错误。gradlew脚本进行安装,但失败并出现以下错误”
执行失败:CREATE EXTENSION pljava;因为:错误:无法访问文件“pljava-so-1.5.1-BETA1”:没有这样的文件或目录
一个gradlew源:
Sql sql = establishConnection()
try {
sql.execute("SET pljava.libjvm_location TO '${javaNative}';")
sql.execute("SET pljava.vmoptions TO '-Xshare:on -XX:+DisableAttachMechanism';")
sql.execute("ALTER DATABASE postgres SET pljava.libjvm_location FROM CURRENT;")
sql.execute("ALTER DATABASE postgres SET pljava.vmoptions FROM CURRENT;")
sql.execute("CREATE EXTENSION pljava;")
} finally {
sql.close()
}
据我了解,它在创建扩展pljava期间失败,上面的命令执行时没有任何错误。
根据@ChapmanFlack 的建议:我没有提到目录中pljava-so-1.5.1-BETA1
的文件pg_config --libdir
。我也没有在pg_config --sharedir
grep LOAD pljava--1.5.1-BETA1.sql
以下输出中找到该文件:
由 LOAD 命令触发,使安装 LOAD 命令成为可能,但找到了 CREATE EXTENSION 命令)。所以,暂时 LOAD 'pljava-so-1.5.1-BETA1'; 好的, LOAD 成功了,所以一切都发生了......除非......在这种情况下,同一个 PostgreSQL 将 LOAD 变成(成功的)无操作,这意味着在这种情况下要快速失败,期望 LOAD 动作应该有
我认为 PL/Java 是从预先构建的,因为gradlew的那一行:
commandLine 'java', '-jar', '../installer/build/dependencies/pljava-pg9.6.jar'
我将不胜感激任何建议