【问题标题】:SchemaCrawler error when adding MariaDB artifact添加 MariaDB 工件时出现 SchemaCrawler 错误
【发布时间】:2018-07-25 09:05:04
【问题描述】:

当我将它添加到 pom.xml 中时:

    <!-- https://mvnrepository.com/artifact/us.fatehi/schemacrawler-mariadb -->
    <dependency>
        <groupId>us.fatehi</groupId>
        <artifactId>schemacrawler-mariadb</artifactId>
        <version>14.08.06</version>
    </dependency>

然后我得到一个错误:

java.util.ServiceConfigurationError: schemacrawler.tools.databaseconnector.DatabaseConnector: Provider schemacrawler.server.mariadb.MariaDBDatabaseConnector could not be instantiated
..
Caused by: java.lang.NoSuchMethodError: schemacrawler.tools.databaseconnector.DatabaseConnector.<init>(Lschemacrawler/tools/databaseconnector/DatabaseServerType;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V

我正在尝试连接到 Oracle 数据库。如果我从 pom 中省略 MariaDb,这将有效。

我正在使用更高版本的 SchemaCrawler:

    <dependency>
        <groupId>us.fatehi</groupId>
        <artifactId>schemacrawler</artifactId>
        <version>14.21.02</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/us.fatehi/schemacrawler-oracle -->
    <dependency>
        <groupId>us.fatehi</groupId>
        <artifactId>schemacrawler-oracle</artifactId>
        <version>14.21.02</version>
    </dependency>

我希望在 pom.xml 中有 MariaDB,并且仍然能够使用 SchemaCrawler 读取 Oracle。连接数据库后出现错误,在以下代码的最后一行:

        Connection dbConnection = DatabaseBroker.getDbConnection(
                eventName, 
                cbDatabase.getValue(), 
                tConnectionString.getValue(), 
                tUsername.getValue(), 
                tPassword.getValue()
        );

        //Schema schema = SchemaCrawler.getSchema(dbConnection, SchemaInfoLevel.detailed(), new SchemaCrawlerOptions());
        //SchemaCrawler sc = new SchemaCrawler(dbConnection, null);
        try
        {
            Catalog catalog = SchemaCrawlerUtility.getCatalog(dbConnection, null);

【问题讨论】:

    标签: java oracle mariadb schemacrawler


    【解决方案1】:

    您正在使用主 SchemaCrawler 库和 SchemaCrawler 数据库插件的不兼容版本。如果您连接到 Oracle,则不需要 MariaDB 插件。事实上,即使类路径上没有 SchemaCrawler 数据库插件,SchemaCrawler 也可以与大多数数据库一起使用。

    【讨论】:

    • 感谢您的回答。我需要连接到用户指定的数据库,可能是 Oracle,也可能不是。 SchemaCrawler 似乎非常适合这种情况。
    • 在这种情况下,请确保您不要在插件上使用不兼容的版本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-09
    • 2019-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多