@Override protected DbUnitDatabaseConnection createDbUnitConnection(String schemaName) { Assert.notNull(schemaName, "数据集的模式名不能为空,且必须规范。"); // 获取数据连接 DbUnitDatabaseConnection connection = super.createDbUnitConnection(schemaName); // 没有根据数据库类型使用特订数据源的MetadataHandler,以下代码防止取不到表的元数据信息 //////////////////////////////////////////////////////////////////////////////////////////////////////////////// boolean isMySQL = false; try { String databaseProductName = connection.getConnection().getMetaData().getDatabaseProductName(); if ("MySQL".equals(databaseProductName)) { isMySQL = true; logger.info( "Database product name = " + databaseProductName + ", set DatabaseConfig.PROPERTY_METADATA_HANDLER to new MySqlMetadataHandler()"); } } catch (SQLException e) { e.printStackTrace(); } // if database is MySQL, reset PROPERTY_METADATA_HANDLER to use MySQL specific Handler if (isMySQL) { DatabaseConfig config = connection.getConfig(); config.setProperty(DatabaseConfig.PROPERTY_METADATA_HANDLER, new MySqlMetadataHandler()); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////// return connection; }