使用 Postgres Ver. 在 Unix 上安装 PL/Java。 9.2+

Install PL/Java on Unix with Postgres Ver. 9.2+

我一直在努力在 OpenSuse、Mageia 或 Manjaro 上的 Postgres(9.2、9.3 或 9.4)上安装 PL/Java...我不想抱怨 - 但 PL/Java 文档太可怕了。我已经用谷歌搜索了 2 个多星期的安装帮助,但进展甚微...

有谁知道如何完成此安装?如果是这样,能否请您用这个不为人知的秘密启蒙世界!

下面是一般形式:

  1. 安装甲骨文JRE/JDK
  2. 安装 PostgreSQL
  3. 安装PL/JavaDependencies
  4. 使用Maven打包PL/Java
  5. 尝试使用 install.sql(+config 东西)
  6. 安装 PL/Java

第 1-3 步有据可查且不言自明,第 4 步似乎很简单,但第 5 步我似乎无法取得任何进展...

到install/what已试过:

4 将 pljava.jar 和 pljava.so 文件(从 Maven 构建)移动到某个位置,例如:

/usr/lib/postgresql

5.1 创建一个postgres.conf文件,放在/etc/ld.so.conf.d/里面,内容为:

/usr/lib/jvm/jdk1.7.0_79/jre/lib
/usr/lib/jvm/jdk1.7.0_79/jre/lib/i386/server

5.2 更新 /usr/share/postgres93/data/ 中的 postgresql.conf 文件,添加以下内容:

pljava.classpath = '/usr/lib/postgresql/pljava.jar'

5.3 运行 install.sql 数据库脚本(比如说 postgres - 因为它存在 OOTB)

psql -d postgres -f /somelocation/install.sql

从我能找到的少量信息来看,这应该是所有需要的,但是在执行 install.sql.

时出现以下错误
psql:/home/pljava/install.sql:6: ERROR: could not access file "pljava": No such file or directory
psql:/home/pljava/install.sql:8: ERROR: function sqlj.java_call_handler() does not exist
psql:/home/pljava/install.sql:12: ERROR: could not access file "pljava": No such file or directory
psql:/home/pljava/install.sql:14: ERROR: function sqlj.javau_call_handler() does not exist
CREATE TABLE
GRANT
CREATE TABLE
GRANT
CREATE TABLE
GRANT
CREATE TABLE
GRANT
CREATE TABLE
GRANT
psql:/home/pljava/install.sql:59: ERROR: language "java" does not exist
psql:/home/pljava/install.sql:63: ERROR: language "java" does not exist
psql:/home/pljava/install.sql:67: ERROR: language "java" does not exist
psql:/home/pljava/install.sql:71: ERROR: language "java" does not exist
psql:/home/pljava/install.sql:75: ERROR: language "java" does not exist
psql:/home/pljava/install.sql:79: ERROR: language "java" does not exist
psql:/home/pljava/install.sql:83: ERROR: language "java" does not exist
psql:/home/pljava/install.sql:87: ERROR: language "java" does not exist
psql:/home/pljava/install.sql:91: ERROR: language "java" does not exist

有什么想法吗?这看起来可能是 java 类路径问题?

经过一段时间的反复试验。上面的with过程看起来没什么问题,除了pljava.so和pljava.jar.

的位置不同

我错误地认为 /usr/lib/postgres 是一个足够好的位置,但它不是正确的位置。相反,它需要位于 postgres lib 目录中! (这是有道理的)。

在我将 pljava.so 和 pljava.jar 移动到 /usr/lib/postgresql/lib 目录后,它神奇地起作用了。