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 编写的驱动程序。
我创建了一个 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 编写的驱动程序。