如何解决Apache NIFI 自定义处理器给出错误“找不到合适的驱动程序”
我创建了一个 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 编写的驱动程序。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。