Java 错误抛出 DBUnit AmbiguousTableNameException
Java DBUnit AmbiguousTableNameException incorrectly thrown
我正在尝试使用 DBUnit (2.6.0) 并尝试导出我的完整数据库 (PostgreSQL)。但是抛出以下异常:
Exception in thread "main" org.dbunit.database.AmbiguousTableNameException: FLYWAY_SCHEMA_HISTORY
这是正确的行为,因为我在不同的架构中有两个同名的 table:
然后我读到您可以设置一个 属性 合格的 Table 名称 (http://dbunit.sourceforge.net/properties.html#qualifiedtablenames) 将考虑架构名称.所以我现在的代码如下:
public class DbUnitExportTool {
public static void main(String[] args) throws Exception {
// database connection
Class.forName("org.postgresql.Driver");
Connection jdbcConnection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/*******", "********", "********");
IDatabaseConnection connection = new DatabaseConnection(jdbcConnection);
connection.getConfig().setProperty(DatabaseConfig.FEATURE_QUALIFIED_TABLE_NAMES, true);
exportDatabase(connection);
}
private static void exportDatabase(IDatabaseConnection connection) throws Exception {
// full database export
IDataSet fullDataSet = connection.createDataSet();
FlatXmlDataSet.write(fullDataSet, new FileOutputStream("full.xml"));
}
}
问题是我仍然遇到同样的错误,我不知道为什么应该通过将合格的 table 名称设置为 true 来解决?有人知道我做错了什么吗?
问题是 JDBC 驱动程序在方法中有一个错误的比较:haveMinimumServerVersion(String ver) (link to bug)。我通过在我的 Maven 依赖项中使用排除来解决这个问题:
<dependency>
<groupId>org.dbunit</groupId>
<artifactId>dbunit</artifactId>
<version>2.6.0</version>
<exclusions>
<exclusion>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
</exclusion>
</exclusions>
</dependency>
这解决了我的问题。我希望它可以帮助别人。
我正在尝试使用 DBUnit (2.6.0) 并尝试导出我的完整数据库 (PostgreSQL)。但是抛出以下异常:
Exception in thread "main" org.dbunit.database.AmbiguousTableNameException: FLYWAY_SCHEMA_HISTORY
这是正确的行为,因为我在不同的架构中有两个同名的 table:
然后我读到您可以设置一个 属性 合格的 Table 名称 (http://dbunit.sourceforge.net/properties.html#qualifiedtablenames) 将考虑架构名称.所以我现在的代码如下:
public class DbUnitExportTool {
public static void main(String[] args) throws Exception {
// database connection
Class.forName("org.postgresql.Driver");
Connection jdbcConnection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/*******", "********", "********");
IDatabaseConnection connection = new DatabaseConnection(jdbcConnection);
connection.getConfig().setProperty(DatabaseConfig.FEATURE_QUALIFIED_TABLE_NAMES, true);
exportDatabase(connection);
}
private static void exportDatabase(IDatabaseConnection connection) throws Exception {
// full database export
IDataSet fullDataSet = connection.createDataSet();
FlatXmlDataSet.write(fullDataSet, new FileOutputStream("full.xml"));
}
}
问题是我仍然遇到同样的错误,我不知道为什么应该通过将合格的 table 名称设置为 true 来解决?有人知道我做错了什么吗?
问题是 JDBC 驱动程序在方法中有一个错误的比较:haveMinimumServerVersion(String ver) (link to bug)。我通过在我的 Maven 依赖项中使用排除来解决这个问题:
<dependency>
<groupId>org.dbunit</groupId>
<artifactId>dbunit</artifactId>
<version>2.6.0</version>
<exclusions>
<exclusion>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
</exclusion>
</exclusions>
</dependency>
这解决了我的问题。我希望它可以帮助别人。