Экспорт HSQLDB в XML с использованием DBUnit приводит к ошибкам нулевого указателя - PullRequest
0 голосов
/ 28 апреля 2011

Я пытаюсь экспортировать все содержимое моей базы данных, HSQLDB, в XML с помощью DBUnit, и я получаю ошибки нулевого указателя, которые я не могу понять.Я следую примеру в FAQ :

<code>IDatabaseConnection xmlConnection = new DatabaseConnection(conn);
IDataSet allTables = xmlConnection.createDataSet();
XmlDataSet.write(allTables, new FileOutputStream(DATABASE_PATH + ".xml"));

Ошибка нулевого указателя возникает в последней строке.conn и DATABASE_PATH не равны NULL, поскольку они оба проверены на это и используются позже в программе без проблем (экспорт базы данных в CSV с использованием OpenCSV, который работает идеально и точно так, как ожидается).выглядит следующим образом:

<code>org.dbunit.dataset.DataSetException: java.sql.SQLException: java.lang.NullPointerException java.lang.NullPointerException
    at org.dbunit.database.DatabaseDataSet.initialize(DatabaseDataSet.java:243)
    at org.dbunit.database.DatabaseDataSet.getTableNames(DatabaseDataSet.java:272)
    at org.dbunit.database.DatabaseDataSet.createIterator(DatabaseDataSet.java:258)
    at org.dbunit.dataset.AbstractDataSet.iterator(AbstractDataSet.java:189)
    at org.dbunit.dataset.stream.DataSetProducerAdapter.(DataSetProducerAdapter.java:63)
    at org.dbunit.dataset.xml.XmlDataSetWriter.write(XmlDataSetWriter.java:128)
    at org.dbunit.dataset.xml.XmlDataSet.write(XmlDataSet.java:104)
    at org.dbunit.dataset.xml.XmlDataSet.write(XmlDataSet.java:91)
    at pms.DatabaseExporter.exportToXML(DatabaseExporter.java:181)
    at pms.DatabaseExporter.main(DatabaseExporter.java:301)
Caused by: java.sql.SQLException: java.lang.NullPointerException java.lang.NullPointerException
    at org.hsqldb.jdbc.Util.sqlException(Util.java:224)
    at org.hsqldb.jdbc.JDBCStatement.fetchResult(JDBCStatement.java:1830)
    at org.hsqldb.jdbc.JDBCStatement.executeQuery(JDBCStatement.java:181)
    at org.hsqldb.jdbc.JDBCDatabaseMetaData.execute(JDBCDatabaseMetaData.java:6150)
    at org.hsqldb.jdbc.JDBCDatabaseMetaData.getTables(JDBCDatabaseMetaData.java:3170)
    at org.dbunit.database.DefaultMetadataHandler.getTables(DefaultMetadataHandler.java:137)
    at org.dbunit.database.DatabaseDataSet.initialize(DatabaseDataSet.java:199)
    ... 9 more
Caused by: org.hsqldb.HsqlException: java.lang.NullPointerException
    at org.hsqldb.error.Error.error(Error.java:108)
    at org.hsqldb.result.Result.newErrorResult(Result.java:1069)
    at org.hsqldb.StatementDMQL.execute(StatementDMQL.java:192)
    at org.hsqldb.Session.executeCompiledStatement(Session.java:1315)
    at org.hsqldb.Session.executeDirectStatement(Session.java:1206)
    at org.hsqldb.Session.execute(Session.java:990)
    at org.hsqldb.jdbc.JDBCStatement.fetchResult(JDBCStatement.java:1822)
    ... 14 more
Caused by: java.lang.NullPointerException
    at org.hsqldb.types.CharacterType.compare(CharacterType.java:418)
    at org.hsqldb.index.IndexAVL.compareRowForInsertOrDelete(IndexAVL.java:617)
    at org.hsqldb.index.IndexAVLMemory.insert(IndexAVLMemory.java:214)
    at org.hsqldb.persist.RowStoreAVL.indexRow(RowStoreAVL.java:171)
    at org.hsqldb.persist.RowStoreAVLHybridExtended.indexRow(RowStoreAVLHybridExtended.java:99)
    at org.hsqldb.Table.insertSys(Table.java:2625)
    at org.hsqldb.dbinfo.DatabaseInformationMain.SYSTEM_TABLES(DatabaseInformationMain.java:2353)
    at org.hsqldb.dbinfo.DatabaseInformationMain.generateTable(DatabaseInformationMain.java:348)
    at org.hsqldb.dbinfo.DatabaseInformationFull.generateTable(DatabaseInformationFull.java:379)
    at org.hsqldb.dbinfo.DatabaseInformationMain.setStore(DatabaseInformationMain.java:507)
    at org.hsqldb.persist.PersistentStoreCollectionSession.getStore(PersistentStoreCollectionSession.java:138)
    at org.hsqldb.Table.getRowStore(Table.java:2817)
    at org.hsqldb.RangeVariable$RangeIteratorMain.(RangeVariable.java:939)
    at org.hsqldb.RangeVariable$RangeIteratorMain.(RangeVariable.java:917)
    at org.hsqldb.RangeVariable.getIterator(RangeVariable.java:770)
    at org.hsqldb.QuerySpecification.buildResult(QuerySpecification.java:1293)
    at org.hsqldb.QuerySpecification.getSingleResult(QuerySpecification.java:1245)
    at org.hsqldb.QuerySpecification.getResult(QuerySpecification.java:1235)
    at org.hsqldb.StatementQuery.getResult(StatementQuery.java:66)
    at org.hsqldb.StatementDMQL.execute(StatementDMQL.java:190)
    ... 18 more

Я погуглил и не смог найти ничего, связанного с такого рода ошибками при экспорте.У меня нет такого опыта работы с SQL или JDBC, поэтому я надеюсь, что в трассировке стека будет достаточно информации, чтобы кто-то более опытный мог сказать мне, что происходит не так.Если есть какая-то другая библиотека, которая была бы лучше для моих нужд, у меня нет проблем с переключением ... Единственное, что мне сейчас нужно, это экспорт / импорт с XML, поэтому я не использую DBUnit для чего-либо еще.В любом случае, если кто-нибудь скажет мне, что происходит не так, или если я должен использовать что-то другое, я очень ценю это.

1 Ответ

1 голос
/ 28 апреля 2011

Это ошибка в конкретной версии создания системной таблицы HSQLDB, которая была недавно обнаружена и исправлена. Вы можете попробовать обновленную банку HSQLDB от http://hsqldb.org/support/

...