ucanaccess 奇怪的异常,我无法处理
Posted
技术标签:
【中文标题】ucanaccess 奇怪的异常,我无法处理【英文标题】:ucanaccess weird exception i cannot handle 【发布时间】:2015-07-02 14:54:34 【问题描述】:我最近开始使用 ucanaccess 来连接访问数据库(显然),直到现在一切正常。 我开始在数据库中插入大约 500,000 行......当我达到大约 400,000 时,程序停止......问题是我看不到异常!我看到了 -
at com.healthmarketscience.jackcess.impl.UsageMap$ReferenceHandler.createNewUsageMapPage(UsageMap.java:763)
at com.healthmarketscience.jackcess.impl.UsageMap$ReferenceHandler.addOrRemovePageNumber(UsageMap.java:747)
at com.healthmarketscience.jackcess.impl.UsageMap.removePageNumber(UsageMap.java:337)
at com.healthmarketscience.jackcess.impl.PageChannel.allocateNewPage(PageChannel.java:354)
at com.healthmarketscience.jackcess.impl.TempPageHolder.setNewPage(TempPageHolder.java:115)
at com.healthmarketscience.jackcess.impl.UsageMap$ReferenceHandler.createNewUsageMapPage(UsageMap.java:763)
at com.healthmarketscience.jackcess.impl.UsageMap$ReferenceHandler.addOrRemovePageNumber(UsageMap.java:747)
at com.healthmarketscience.jackcess.impl.UsageMap.removePageNumber(UsageMap.java:337)
at com.healthmarketscience.jackcess.impl.PageChannel.allocateNewPage(PageChannel.java:354)
at com.healthmarketscience.jackcess.impl.TempPageHolder.setNewPage(TempPageHolder.java:115)
at com.healthmarketscience.jackcess.impl.UsageMap$ReferenceHandler.createNewUsageMapPage(UsageMap.java:763)
at com.healthmarketscience.jackcess.impl.UsageMap$ReferenceHandler.addOrRemovePageNumber(UsageMap.java:747)
at com.healthmarketscience.jackcess.impl.UsageMap.removePageNumber(UsageMap.java:337)
at com.healthmarketscience.jackcess.impl.PageChannel.allocateNewPage(PageChannel.java:354)
at com.healthmarketscience.jackcess.impl.TempPageHolder.setNewPage(TempPageHolder.java:115)
at com.healthmarketscience.jackcess.impl.UsageMap$ReferenceHandler.createNewUsageMapPage(UsageMap.java:763)
at com.healthmarketscience.jackcess.impl.UsageMap$ReferenceHandler.addOrRemovePageNumber(UsageMap.java:747)
at com.healthmarketscience.jackcess.impl.UsageMap.removePageNumber(UsageMap.java:337)
at com.healthmarketscience.jackcess.impl.PageChannel.allocateNewPage(PageChannel.java:354)
at com.healthmarketscience.jackcess.impl.TempPageHolder.setNewPage(TempPageHolder.java:115)
at com.healthmarketscience.jackcess.impl.UsageMap$ReferenceHandler.createNewUsageMapPage(UsageMap.java:763)
at com.healthmarketscience.jackcess.impl.UsageMap$ReferenceHandler.addOrRemovePageNumber(UsageMap.java:747)
at com.healthmarketscience.jackcess.impl.UsageMap.removePageNumber(UsageMap.java:337)
at com.healthmarketscience.jackcess.impl.PageChannel.allocateNewPage(PageChannel.java:354)
at com.healthmarketscience.jackcess.impl.TempPageHolder.setNewPage(TempPageHolder.java:115)
at com.healthmarketscience.jackcess.impl.UsageMap$ReferenceHandler.createNewUsageMapPage(UsageMap.java:763)
我看不出异常是从哪里开始的! 它已经发生在我身上一次但是在进行“压缩和修复”之后,它又起作用了...... 现在没有了。
有人知道这是怎么回事吗?
【问题讨论】:
它发生在 jackcess 层,所以你应该寻求他们的帮助(我的意思是,提供你拥有的异常堆栈跟踪,它看起来真的像堆栈溢出)。什么是 ucanaccess/jackcess 版本? 在这个异常上稍微摸索了一下,它认为你有一个“非标准”数据库(看起来数据库的内部跟踪没有以预期的方式处理)。这个数据库是如何创建的? 【参考方案1】:检查以下三件事。
首先,如果您使用任何 IDE,请确保增加日志缓冲区,以便您可以开始此异常。可能不会提供太多帮助,但总比看中间的某个地方要好。
其次,数据库文件大小是多少? Access DB 文件大小有限制,有时会导致此类非常规错误。检查一下。
第三 - 在使用 ucanaccess 更新/插入时,不要打开或尝试对特定数据库执行其他操作。这样做,大多数时候都会导致这个问题。
【讨论】:
以上是关于ucanaccess 奇怪的异常,我无法处理的主要内容,如果未能解决你的问题,请参考以下文章
ucanaccess SQL 异常:游标状态无效:已识别游标未打开