连接数据库时出错:(使用类org.gjt.mm.mysql.Driver)语句(1)没有打开游标

Posted

技术标签:

【中文标题】连接数据库时出错:(使用类org.gjt.mm.mysql.Driver)语句(1)没有打开游标【英文标题】:Error connecting to database: (using class org.gjt.mm.mysql.Driver) The statement (1) has no open cursor 【发布时间】:2016-02-23 06:40:11 【问题描述】:

我正在开发 Pentaho 数据集成工具 5.2 版。我正在尝试使用“表格输入”步骤连接到数据库。但是当我在此步骤中测试连接时,它会给我以下错误消息。我可以使用 mysql 工作台连接到数据库。我已将“mysql-connector-java-5.1.38-bin”文件放在libext forlder 中。

我需要降级我的连接器 jar 文件吗?如果是,我的 SQL 版本是 5.6,那么有人可以告诉我此 SQL Server 版本的兼容连接器 jar 版本吗?

Error connecting to database [myLedger] : org.pentaho.di.core.exception.KettleDatabaseException: 
Error occured while trying to connect to the database

Error connecting to database: (using class org.gjt.mm.mysql.Driver)
The statement (1) has no open cursor.


org.pentaho.di.core.exception.KettleDatabaseException: 
Error occured while trying to connect to the database

Error connecting to database: (using class org.gjt.mm.mysql.Driver)
The statement (1) has no open cursor.


    at org.pentaho.di.core.database.Database.normalConnect(Database.java:427)
    at org.pentaho.di.core.database.Database.connect(Database.java:361)
    at org.pentaho.di.core.database.Database.connect(Database.java:314)
    at org.pentaho.di.core.database.Database.connect(Database.java:302)
    at org.pentaho.di.core.database.DatabaseFactory.getConnectionTestReport(DatabaseFactory.java:80)
    at org.pentaho.di.core.database.DatabaseMeta.testConnection(DatabaseMeta.java:2685)
    at org.pentaho.ui.database.event.DataHandler.testDatabaseConnection(DataHandler.java:546)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.pentaho.ui.xul.impl.AbstractXulDomContainer.invoke(AbstractXulDomContainer.java:313)
    at org.pentaho.ui.xul.impl.AbstractXulComponent.invoke(AbstractXulComponent.java:157)
    at org.pentaho.ui.xul.impl.AbstractXulComponent.invoke(AbstractXulComponent.java:141)
    at org.pentaho.ui.xul.swt.tags.SwtButton.access$500(SwtButton.java:43)
    at org.pentaho.ui.xul.swt.tags.SwtButton$4.widgetSelected(SwtButton.java:138)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(Unknown Source)
    at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
    at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
    at org.eclipse.jface.window.Window.runEventLoop(Window.java:820)
    at org.eclipse.jface.window.Window.open(Window.java:796)
    at org.pentaho.ui.xul.swt.tags.SwtDialog.show(SwtDialog.java:389)
    at org.pentaho.ui.xul.swt.tags.SwtDialog.show(SwtDialog.java:318)
    at org.pentaho.di.ui.core.database.dialog.XulDatabaseDialog.open(XulDatabaseDialog.java:116)
    at org.pentaho.di.ui.core.database.dialog.DatabaseDialog.open(DatabaseDialog.java:59)
    at org.pentaho.di.ui.trans.step.BaseStepDialog$4.widgetSelected(BaseStepDialog.java:740)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(Unknown Source)
    at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
    at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
    at org.pentaho.di.ui.trans.steps.tableinput.TableInputDialog.open(TableInputDialog.java:435)
    at org.pentaho.di.ui.spoon.delegates.SpoonStepsDelegate.editStep(SpoonStepsDelegate.java:124)
    at org.pentaho.di.ui.spoon.Spoon.editStep(Spoon.java:8720)
    at org.pentaho.di.ui.spoon.trans.TransGraph.editStep(TransGraph.java:3027)
    at org.pentaho.di.ui.spoon.trans.TransGraph.mouseDoubleClick(TransGraph.java:744)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(Unknown Source)
    at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
    at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
    at org.pentaho.di.ui.spoon.Spoon.readAndDispatch(Spoon.java:1310)
    at org.pentaho.di.ui.spoon.Spoon.waitForDispose(Spoon.java:7931)
    at org.pentaho.di.ui.spoon.Spoon.start(Spoon.java:9202)
    at org.pentaho.di.ui.spoon.Spoon.main(Spoon.java:648)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.pentaho.commons.launcher.Launcher.main(Launcher.java:92)
Caused by: org.pentaho.di.core.exception.KettleDatabaseException: 
Error connecting to database: (using class org.gjt.mm.mysql.Driver)
    The statement (1) has no open cursor.

    at org.pentaho.di.core.database.Database.connectUsingClass(Database.java:572)
    at org.pentaho.di.core.database.Database.normalConnect(Database.java:410)
    ... 51 more
Caused by: java.sql.SQLException: The statement (1) has no open cursor.
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2822)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:777)
    at com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:1260)
    at com.mysql.jdbc.MysqlIO.fetchRowsViaCursor(MysqlIO.java:3838)
    at com.mysql.jdbc.CursorRowProvider.fetchMoreRows(CursorRowProvider.java:383)
    at com.mysql.jdbc.CursorRowProvider.hasNext(CursorRowProvider.java:303)
    at com.mysql.jdbc.ResultSet.next(ResultSet.java:6459)
    at com.mysql.jdbc.Connection.loadServerVariables(Connection.java:4059)
    at com.mysql.jdbc.Connection.initializePropsFromServer(Connection.java:3778)
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:2608)
    at com.mysql.jdbc.Connection.<init>(Connection.java:1509)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
    at java.sql.DriverManager.getConnection(DriverManager.java:571)
    at java.sql.DriverManager.getConnection(DriverManager.java:215)
    at org.pentaho.di.core.database.Database.connectUsingClass(Database.java:554)
    ... 52 more

【问题讨论】:

【参考方案1】:

我已经解决了这个问题。在数据库连接左侧面板的Options 菜单中,useCursorFetch 设置为true,我已将其更改为false

【讨论】:

我在菜单 option 中看不到任何 useCursorFetch。 :( 您使用的是哪个版本的 PDI?

以上是关于连接数据库时出错:(使用类org.gjt.mm.mysql.Driver)语句(1)没有打开游标的主要内容,如果未能解决你的问题,请参考以下文章

从连接 Firebird 读取数据时出错

尝试运行连接器类“io.debezium.connector.mysql.MySqlConnector”时出错

使用 Bigquery 连接器时出错

SQL2005 连接出错

为啥wordpress建立数据库连接时出错

使用 SQLServer 连接数据库时出错