【问题标题】:Apache derby db Error ''The conglomerate (1.744) requested does not exist''Apache derby db 错误“请求的企业集团 (1.744) 不存在”
【发布时间】:2021-01-07 17:51:19
【问题描述】:

我正在将 Apache derby 数据库用于我从事的 Java 项目。

我已经创建了 EVALUATIONCOMS 表,现在我想插入相同的值。

我试试:

public void instertEvalComments(String comment) {
    try {
        stmt = conn.createStatement();// create a Statement

        stmt.execute("INSERT INTO EVALUATIONCOMS" 
                    + " VALUES ('" + comment + "')" );

        stmt.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

但我得到了错误:

java.sql.SQLException: The conglomerate (1.744) requested does not exist.
at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
at gr.aueb.dmst.StopSpread.Database.insterIntoEvalComments(Database.java:242)
at gr.aueb.dmst.StopSpread.ServerClientThread.run(ServerClientThread.java:304)
Caused by: ERROR XSAI2: The conglomerate (1.744) requested does not exist.
    at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
    at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
    at org.apache.derby.impl.store.access.heap.HeapConglomerateFactory.readConglomerate(Unknown Source)
    at org.apache.derby.impl.store.access.CacheableConglomerate.setIdentity(Unknown Source)
    at org.apache.derby.impl.services.cache.ConcurrentCache.find(Unknown Source)
    at org.apache.derby.impl.store.access.RAMAccessManager.conglomCacheFind(Unknown Source)
    at org.apache.derby.impl.store.access.RAMTransaction.findConglomerate(Unknown Source)
    at org.apache.derby.impl.store.access.RAMTransaction.findExistingConglomerate(Unknown Source)
    at org.apache.derby.impl.store.access.RAMTransaction.getStaticCompiledConglomInfo(Unknown Source)
    at org.apache.derby.impl.sql.compile.InsertNode.makeConstantAction(Unknown Source)
    at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source)
    at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source)
    at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown Source)
    ... 4 more

这是我第一次遇到这样的错误,我不知道为什么。

我会向您提供帮助。

注意:我已经执行了相同的方法,只更改了架构中其他表的名称和列,一切正常。我使用的所有其他数据库处理方法也可以正常工作。

【问题讨论】:

  • 你试过重启数据库吗?
  • 刚做了,我也有同样的错误
  • 我怀疑它与表有关,因为当我尝试访问此表时遇到这种错误,而其他表有问题

标签: java derby


【解决方案1】:

那是“不应该发生的”。您的数据库不知何故损坏了,仅凭这些证据很难判断发生了什么。

也许您的磁盘已满?也许您发生了崩溃并且没有正确恢复?也许您在 Derby 引擎仍在该数据库上运行时将 Derby 数据库从硬盘的一部分移动到另一部分?我只是猜测,恐怕。

数据库中的每个表或索引在物理上存储为一个“企业集团”,每个企业集团都是硬盘上数据库文件夹中的一个单独文件。

您可以通过查询sysconglomerates 系统视图了解更多关于哪个企业集团对应于您的数据库中的哪个表或索引;加入 systables 视图以改进信息。见https://db.apache.org/derby/docs/10.15/ref/rrefsistabs39391.htmlhttps://db.apache.org/derby/docs/10.15/ref/rrefsistabs24269.html

如果不出意外,此分析将帮助您了解哪些表已损坏,哪些文件丢失。

如果您可以重现此问题,也许您可​​以更加关注正在发生的操作以及文件消失的确切时间。

【讨论】:

    【解决方案2】:

    您是否尝试过先删除表,然后再次创建他,然后重试? 它的命令“DROP EVALUATIONCOMS” 我遇到了同样的问题,只是删除了他并从头开始制作了一个新问题,但它经常卡住,就是这样,所以试着告诉我! 祝你好运

    【讨论】:

      猜你喜欢
      • 2018-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多