代码之家  ›  专栏  ›  技术社区  ›  Adder

添加MariaDB工件时发生SchemaCrawler错误

  •  0
  • Adder  · 技术社区  · 6 年前

    当我将此添加到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);
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Sualeh Fatehi    6 年前

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

    推荐文章