【问题标题】:PostgreSQL Error: column am.amcanorder doesn't existPostgreSQL 错误:列 am.amcanorder 不存在
【发布时间】:2016-11-20 12:31:31
【问题描述】:

我正在开发基于 CentOS 版本 6.8(最终版)的服务器,但没有 sudo 访问权限。我编译了 PostgreSQL v9.6 beta 2。

当我使用 ant 加载数据时,我得到 am.amcanorder column doesn't exist 错误,我不知道如何解决。

我正在按照教程设置 Intermine 数据仓库系统,我在 this step


 ant -Dsource=uniprot-malaria -v

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

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

粗体部分是(在我看来)导致错误的原因。相关的详细错误是:

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)

【问题讨论】:

  • @ErwinBrandstetter 已更新,尽管我认为问题出在 postgresql 本身而不是我正在运行的代码...
  • 这肯定是 Postgres 错误消息。在表 am 中找不到列 amcanorder。不过,我不知道为什么。
  • 是的,我找不到任何真实的信息,至少不是我所理解的。如果我以某种方式克服了这个错误,我会回答我自己的问题。
  • 您能检查一下am 表是否存在吗?如果没有,是否有另一个表包含 amcanorder 列?可能表名已更新,但初始化代码/脚本未更新。
  • JDBC 驱动程序的更新已作为拉取请求合并到 intermine(这是 OP 正在谈论的软件),因此该问题应在上游修复 github.com/intermine/intermine/pull/1475

标签: postgresql ant


【解决方案1】:

这个问题已经通过编译 v9.5.3 解决了,这是目前最新的稳定版本。以前,我使用的是 v9.6beta2 ... 在使用 JDBC 和 v9.6beta2 时,它有一个 reported error

【讨论】:

    【解决方案2】:

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

    <postgresql.version>9.4.1211</postgresql.version>
    

    这对我也有用。

    【讨论】:

    • 谢谢。工作得很漂亮。我不喜欢我的日志中报告的非关键错误。让我不安。
    • 移动到最新的驱动程序版本解决了 java 的问题。
    • 从 9.4.1208 升级到 9.4.1211 也适用于我。
    • 在 Hive 2.3.8 从 9.4.1208 升级到 9.4.1212 时为我工作
    【解决方案3】:

    我在使用 SpringBoot 时遇到了同样的问题,并通过升级我的驱动程序解决了这个问题

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

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

    【讨论】:

    • 这是真的,但前提是你的项目是 Spring Boot 的子模块,因为它继承了 Spring Boot 的依赖项。此外,不指定版本会导致使用最新版本。
    【解决方案4】:

    对我来说(从 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>
    

    【讨论】:

    • 是的。我遇到了同样的问题,42.1.4 以上版本可以正常工作
    • 对于9.6,可以使用42.2.6版本。
    【解决方案5】:

    就我而言,我使用的是 PostgreSQL 驱动程序 (9.4.1204),并且与 hive 外部元存储不兼容。用https://jdbc.postgresql.org/download.html的最新版本替换后工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-28
      • 2019-05-08
      相关资源
      最近更新 更多