java - 添加 MariaDB 工件时出现 SchemaCrawler 错误
问题描述
当我将此添加到 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.xml 中省略 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);
解决方案
您正在使用主 SchemaCrawler 库和 SchemaCrawler 数据库插件的不兼容版本。如果您连接到 Oracle,则不需要 MariaDB 插件。事实上,即使类路径上没有 SchemaCrawler 数据库插件,SchemaCrawler 也可以与大多数数据库一起使用。
推荐阅读
- python - 如何解析目录中的多个 fastq 文件?
- javascript - `#` 符号在 JavaScript 中的作用是什么?
- c - 使用 POSIX glob() 函数,gl_pathv 返回 NULL — 我如何获取文件名?
- firebase - Flutter 新手机身份验证现在在单独的浏览器中执行“不是机器人”检查,这使整个过程变慢
- python - Seaborn 在 1 个图中绘制 3 条线,其中一条向右移动
- javascript - 使用更新循环时如何在 useEffect 中获取更新状态
- java - 使用 @RequestParam 参数在 Post 方法中映射多个值(多部分数据 + json)
- reactjs - 带有反应脚本的 ESLint 配置不起作用
- ruby-on-rails - Rails 无法更改格式中的标签
- python - asyncio 和线程有什么区别?