Exportar un HSQLDB a XML utilizando DBUNIT da como resultado errores de puntero nulo

StackOverflow https://stackoverflow.com/questions/5810219

  •  25-10-2019
  •  | 
  •  

Pregunta

Estoy tratando de exportar todo el contenido de mi base de datos, un HSQLDB, a XML usando DBUnit, y estoy recibiendo errores de puntero nulos que no puedo entender. Estoy siguiendo el ejemplo en el Preguntas más frecuentes:

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

El error de puntero nulo ocurre en la última línea. Conn y Database_path no son nulos, ya que ambos están verificados para eso y se usan más adelante en el programa sin un problema (exportar la base de datos a CSV usando OpenCSV, que funciona perfectamente y exactamente como se esperaba).

El StackTrace es el siguiente:

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

He Google y no pude encontrar nada relacionado con este tipo de error durante la exportación. No tengo tan experiencia con SQL o JDBC, así que espero que haya suficiente información en el rastro de la pila para alguien más conocedor para decirme qué está mal. Si hay alguna otra biblioteca que sería mejor para mis necesidades, no tengo problemas para cambiar ... lo único que necesito es exportar/importar con XML en este momento, por lo que no estoy usando dbunit para nada más. De todos modos, si alguien puede decirme qué está pasando mal o si debería usar algo más, lo agradecería.

¿Fue útil?

Solución

Este es un error en la versión particular de la creación de la tabla del sistema de HSQLDB, que fue detectada y corregida recientemente. Puede probar el jar HSQLDB actualizado desde http://hsqldb.org/support/

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top