代码之家  ›  专栏  ›  技术社区  ›  pkaeding

DBUnit:找不到<schema.table>“MYSCHEMA”的列“MYCOL”。目录“MYDB”中的“MYTABLE”,因为名称不完全匹配

  •  2
  • pkaeding  · 技术社区  · 17 年前

    java.lang.IllegalStateException: Did not find column 'MYCOL' for <schema.table> 'MYSCHEMA  .MYTABLE' in catalog 'MYDB' because names do not exactly match.
        at org.dbunit.database.ResultSetTableMetaData.scrollTo(ResultSetTableMetaData.java:297)
        at org.dbunit.database.ResultSetTableMetaData.createColumnFromDbMetaData(ResultSetTableMetaData.java:262)
        at org.dbunit.database.ResultSetTableMetaData.createMetaData(ResultSetTableMetaData.java:154)
        at org.dbunit.database.ResultSetTableMetaData.createMetaData(ResultSetTableMetaData.java:131)
        at org.dbunit.database.ResultSetTableMetaData.<init>(ResultSetTableMetaData.java:97)
        at org.dbunit.database.AbstractResultSetTable.<init>(AbstractResultSetTable.java:84)
        at org.dbunit.database.AbstractResultSetTable.<init>(AbstractResultSetTable.java:63)
        at org.dbunit.database.ForwardOnlyResultSetTable.<init>(ForwardOnlyResultSetTable.java:65)
        at org.dbunit.database.CachedResultSetTableFactory.createTable(CachedResultSetTableFactory.java:52)
        at org.dbunit.database.AbstractDatabaseConnection.createQueryTable(AbstractDatabaseConnection.java:90)
        at org.dbunit.database.AbstractDatabaseConnection.createTable(AbstractDatabaseConnection.java:115)
        at org.dbunit.database.QueryTableIterator.getTable(QueryTableIterator.java:143)
        at org.dbunit.dataset.stream.DataSetProducerAdapter.produce(DataSetProducerAdapter.java:83)
        at org.dbunit.dataset.xml.FlatXmlWriter.write(FlatXmlWriter.java:124)
        at org.dbunit.dataset.xml.FlatXmlDataSet.write(FlatXmlDataSet.java:341)
    

    有什么想法吗?

    2 回复  |  直到 17 年前
        1
  •  3
  •   Uooo Stephan Weinhold    11 年前

        ...
        boolean areEqual =
                areEqualIgnoreBothNull(catalog, catalogName, caseSensitive) &&
                areEqualIgnoreNull(schema, schemaName, caseSensitive) &&
                areEqualIgnoreNull(table, tableName, caseSensitive) &&
                areEqualIgnoreNull(column, columnName, caseSensitive);
    
        return areEqual;
    
    
        private boolean areEqualIgnoreBothNull(String value1, String value2,
                                           boolean caseSensitive) {
                boolean areEqual = true;
                if (value1 != null && value2 != null) {
                    if (value1.equals("") && value2.equals("")) {
                        if (caseSensitive) {
                            areEqual = value1.equals(value2);
                        } else {
                            areEqual = value1.equalsIgnoreCase(value2);
                        }
                    }
                }
                return areEqual;
            }
    

    http://dbunit.sourceforge.net/properties.html

        2
  •  1
  •   Uooo Stephan Weinhold    11 年前

    这个问题似乎只有在使用DB2时才会出现 fixed with DBUnit 2.4.7 .

    IDatabaseConnection connection = ...
    
    connection.getConfig().setProperty
    (
        "http://www.dbunit.org/properties/metadataHandler",
        new Db2MetadataHandler()
    );
    
    推荐文章