Apache NIFI 自定义处理器给出错误 "cannot find suitable driver"

Apache NIFI custom processor gives error "cannot find suitable driver"

我创建了一个 nifi 处理器,它应该从数据库中读取一些东西并将结果放入一个属性中。代码非常简单,只是创建一个简单的 JDBC 连接。

private Connection getDatabaseConnection(ProcessContext context){
    if(databaseConnection == null) {
        try {
            String url = createJDBCUrl(context);
            databaseConnection = DriverManager.getConnection(url,
                   context.getProperty(DB_USER_NAME).getValue(),
                   context.getProperty(DB_PASSWORD).getValue());
        } catch (Exception throwables) {
            throwables.printStackTrace();
        }
    }
    return databaseConnection;
}

private String createJDBCUrl(ProcessContext context) {
    String ip = context.getProperty(DB_IP).getValue();
    String port = context.getProperty(DB_PORT).getValue();
    String dbName = context.getProperty(DB_NAME).getValue();
    return "jdbc:mariadb://" + ip + ":" + port + "/" + dbName;
}

我收到这个错误:

No suitable driver found for jdbc:mariadb://databaste-ip:3306/database-name

我试过将 mysql-connector-java-5.1.49 文件放在 nifi lib 文件夹中,但没有成功。我也将文件放在资源文件夹中以将驱动程序与处理器捆绑在一起,但也没有成功。 此外,我以不同方式编写了处理器并使用了 Apache commons-dbcp 中的 BasicDataSource,因此我可以定义驱动程序文件所在的位置,但我再次遇到错误:

Cannot create JDBC driver of class 'com.mysql.jdbc.Driver' for connect URL 'jdbc:mariadb://database-ip:3306/database-name'

如果您使用 jdbc:mariadb: 协议,那么您应该使用 MariaDB Connector/J,而不是 MySQL Connector/J 驱动程序。 MySQL Connector/J 驱动程序只知道 jdbc:mysql: 协议。

或者,如果您想继续使用 MySQL Connector/J,那么您应该使用协议 jdbc:mysql:。然而,鉴于 MySQL 和 MariaDB 是 - 我假设 - 分歧,最好使用专门为 MariaDB 编写的驱动程序。