Nifi无法连接到本地MySQL

时间:2018-09-18 00:35:41

标签: mysql apache-nifi

我的Mysql在端口3306上本地运行。Nifi也已设置并正常工作。如图所示,我在QueryDatabaseTable和SplitAvro之间有一个简单的流程,enter image description here

我也设置了一个DBCPConnectionPool控制器, enter image description here

数据库连接URL: jdbc:mysql:// localhost:3306 / formulae

数据库驱动程序类名称: com.mysql.jdbc.Driver

数据库驱动程序位置: C:\ Users \ chetanyadav \ Documents \ mysql-connector-java-8.0.12 \ mysql-connector-java-8.0.12.jar

数据库名称-公式

表格名称-单元格

我正在尝试使用QueryDatabaseTable访问表中的所有记录, enter image description here

但是我得到这个错误,

enter image description here

我基本上无法连接到MySQL并无法从表中获取数据。

错误的完整堆栈跟踪:

2018-09-18 09:52:30,917 ERROR [Timer-Driven Process Thread-1] o.a.n.p.standard.QueryDatabaseTable QueryDatabaseTable[id=d5293f61-0165-1000-cd8d-fe9155176abd] Unable to execute SQL select query SELECT * FROM cell_lot due to org.apache.nifi.processor.exception.ProcessException: org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class 'com.mysql.cj.jdbc.Driver' for connect URL 'jdbc:mysql://127.0.0.1:3306/formulae
': org.apache.nifi.processor.exception.ProcessException: org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class 'com.mysql.cj.jdbc.Driver' for connect URL 'jdbc:mysql://127.0.0.1:3306/formulae
'
org.apache.nifi.processor.exception.ProcessException: org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class 'com.mysql.cj.jdbc.Driver' for connect URL 'jdbc:mysql://127.0.0.1:3306/formulae
'
    at org.apache.nifi.dbcp.DBCPConnectionPool.getConnection(DBCPConnectionPool.java:276)
    at org.apache.nifi.dbcp.DBCPService.getConnection(DBCPService.java:49)
    at sun.reflect.GeneratedMethodAccessor69.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.nifi.controller.service.StandardControllerServiceInvocationHandler.invoke(StandardControllerServiceInvocationHandler.java:84)
    at com.sun.proxy.$Proxy102.getConnection(Unknown Source)
    at org.apache.nifi.processors.standard.QueryDatabaseTable.onTrigger(QueryDatabaseTable.java:303)
    at org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1165)
    at org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:203)
    at org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:117)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class 'com.mysql.cj.jdbc.Driver' for connect URL 'jdbc:mysql://127.0.0.1:3306/formulae
'
    at org.apache.commons.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1452)
    at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
    at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
    at org.apache.nifi.dbcp.DBCPConnectionPool.getConnection(DBCPConnectionPool.java:273)
    ... 17 common frames omitted
Caused by: java.sql.SQLException: No suitable driver
    at java.sql.DriverManager.getDriver(DriverManager.java:315)
    at org.apache.commons.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1437)
    ... 20 common frames omitted

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。我使用的是MySQL-connector.jar,我将连接器更改为MySQL-connector-java-5.1.24-bin.jar,它可以正常工作。我认为新版本的JDBC驱动程序存在兼容性问题。