当前位置:首页 > 开发 > 开源软件 > 正文

dbunit在获取mysql数据时“No columns found”

发表于: 2012-06-29   作者:coolas   来源:转载   浏览:
摘要: public static void extractTables(String targetDirectory,String[] tableNames) throws Exception { IDatabaseConnection connection =new DatabaseConnection( dc.getConnection(), &q
    public static void extractTables(String targetDirectory,String[] tableNames)
            throws Exception {
        IDatabaseConnection connection =new DatabaseConnection( dc.getConnection(), "DB_NAME");
        connection.getConfig().setProperty(DatabaseConfig.PROPERTY_METADATA_HANDLER,new MySqlMetadataHandler());
        for (int i = 0; i < tableNames.length; i++) {
            String tableName = tableNames[i];
            IDataSet partialDataSet = connection.createDataSet
                    (new String[] { tableName });
            FlatXmlDataSet.write
                    (partialDataSet, new FileOutputStream
                            (targetDirectory + "/" + tableName + ".xml"));
        }
    }

现象:
运行会出现"No columns found"的错误。DB_NAME为库的名称,一开始认为就是schema.
原因:
调试后发现,ResultSet resultSet = databaseMetaData.getColumns(
                null, schemaName, tableName, "%"); 中,schemaName的值无关痛痒,返回的schema字段为null,在org.dbunit.database.DefaultMetadataHandler#matches中做判断时,由于schema不一致,导致返回col为空
解决办法:
将"DB_NAME"改为null即可

dbunit在获取mysql数据时“No columns found”

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号