PostgreSQL错误:列am.amcanorder不存在

pla*_*r87 35 ant postgresql

我正在使用没有sudo访问权限的CentOS 6.8版(最终版)服务器.我编译了PostgreSQL v9.6 beta 2.

当我使用ant加载数据时,我得到am.amcanorder列不存在错误,我不知道如何修复.

我正在按照教程设置Intermine数据仓库系统,我正在这一步.


 ant -Dsource=uniprot-malaria -v
Run Code Online (Sandbox Code Playgroud)

这将需要几分钟才能完成,该命令运行以下步骤:

  • 检查project.xml中是否存在名为uniprot-malaria的源
  • 在src.data.dir指定的位置读取UniProt XML文件
  • 使用文件列表调用uniprot源中包含的解析器,这将读取原始XML并创建Items,这些项是将加载到malariamine数据库中的对象的元数据表示.
  • 这些项目存储在中间项目数据库中.从items数据库读取,将项目转换为对象并将它们加载到malariamine数据库中.

粗体部分是(在我看来)造成错误的原因.相关错误详细是:

org.postgresql.util.PSQLException: ERROR: column am.amcanorder does not exist
  Position: 407
        at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2161)
        at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1890)
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:559)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:403)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:283)
        at org.postgresql.jdbc2.AbstractJdbc2DatabaseMetaData.getIndexInfo(AbstractJdbc2DatabaseMetaData.java:4234)
        at org.intermine.task.CreateIndexesTask.execute(CreateIndexesTask.java:212)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
Run Code Online (Sandbox Code Playgroud)

小智 45

Player87是正确的,只需用PostgresSQL 服务器的 9.5.*替换较新版本9.6*即可.
但是,还有另一种解决方案.对于Java项目,我也尝试在9.6.*上保留PostgresSQL 服务器并更新PostgresSQL驱动程序,从版本9.4-1203到最新的9.4-1211.在maven pom.xml文件中:

<postgresql.version>9.4.1211</postgresql.version>
Run Code Online (Sandbox Code Playgroud)

这对我也有用.


pla*_*r87 12

那么问题是通过编译v9.5.3来修复的,这是目前最新的稳定版本.以前,我使用的是v9.6beta2 ... 在使用JDBC和v9.6beta2时报告错误.


Gre*_*tle 10

对我来说(从Java/Maven应用程序连接到PostgreSQL并面临同样的错误),这是一个驱动程序问题.

将PostgreSQL驱动程序从9.4-1201-jdbc41更新到42.1.4解决了它.我的Maven依赖现在看起来像这样:

    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>42.1.4</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)


Nag*_*tti 7

我遇到了与SpringBoot相同的问题,并通过升级我的驱动程序解决了这个问题

对于Spring Boot 1.4.0,我刚刚添加了以下依赖项

<dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> </dependency>

  • 这是真的,但前提是您的项目是 spring boot 的子模块,因为它继承了 Spring Boot 的依赖项。此外,不指定版本会导致使用最新版本。 (2认同)