我正在嘗試解決與其他人使用Jackcess版本1.1.8將信息寫入Access數據庫的程序相關的問題。在這應該加4個百萬行給定的Access表運行時,會出現以下異常:Jackcess Table Limit?
08/29/2016 06:01:47 | ERROR | java.lang.IndexOutOfBoundsException
at java.nio.Buffer.checkIndex(Unknown Source)
at java.nio.HeapByteBuffer.getInt(Unknown Source)
at com.healthmarketscience.jackcess.ReferenceUsageMap.addOrRemovePageNumber(ReferenceUsageMap.java:82)
at com.healthmarketscience.jackcess.UsageMap.addPageNumber(UsageMap.java:201)
at com.healthmarketscience.jackcess.Table.newDataPage(Table.java:761)
at com.healthmarketscience.jackcess.Table.addRows(Table.java:714)
at com.healthmarketscience.jackcess.Table.addRow(Table.java:660)
從我在網上看到,看來Jackcess的當前版本爲2 *,所以是這可以通過使用最新版本來解決,還是有更大的問題,即對於Access表來說,有400萬行太多了?或者,有沒有辦法通過一個Cursor對象添加行,這會減少內存密集?
不,對於Access表*本身,400萬行不是太多行*。但是,如果您的數據庫文件達到2 GB的限制,則會導致問題。至於「內存密集程度較低」的內容,異常並不表示JVM內存有問題(例如,「堆空間不足」)。此應用程序是否創建新的數據庫文件,還是寫入現有的文件? –
@GordThompson,有問題的代碼創建一個Table對象,然後調用它的addRow()方法,所以我的假設是Table對象在某個點上太大以適應內存,因此例外... –