Java DBUnit AmbiguousTableNameException неправильно выброшен - PullRequest
0 голосов
/ 17 мая 2019

Я экспериментирую с DBUnit (2.6.0) и пытаюсь экспортировать свою полную базу данных (PostgreSQL). Однако выдается следующее исключение:

Исключение в потоке "main" org.dbunit.database.AmbiguousTableNameException: FLYWAY_SCHEMA_HISTORY

Это правильное поведение, так как у меня есть две таблицы в разных схемах с одинаковым именем:

enter image description here

Затем я прочитал, что вы можете установить свойство Квалифицированные имена таблиц (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"));
}
}

Проблема в том, что я все еще получаю ту же ошибку, и я не знаю, почему, так как ее следует устранить, установив для квалифицированных имен таблиц значение true? Кто-нибудь знает, что я делаю не так?

1 Ответ

0 голосов
/ 05 июля 2019

Проблема заключалась в том, что драйвер JDBC неверно сравнивал метод: haveMinimumServerVersion (String ver) ( ссылка на ошибку ). Я решил это, используя исключение в моих зависимостях 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>

Это решило мою проблему. Я надеюсь, что это может помочь кому-то еще.

...