Is there any known issue with the DB reader node affecting Informix 10 ODBC access? Queries working fine in Business Objects, Server Studio, SQuirreL and Access would only produce the following in KNIME:
[Informix][Informix ODBC Driver][Informix]A syntax error has occurred.
WARN Database Reader java.sql.SQLException: [Informix][Informix ODBC Driver][Informix]A syntax error has occurred.
Hi E.,
I donât know about any problems, admittedly I havenât tested our database nodes on an Informix database. The message you have posted looks like a warning (WARN), but not an error (ERROR). Is this node still yellow or red after configure/execute? Do you also have a stacktrace that you could send me; if possible also the SQL query your are trying to execute.
Cheers, Thomas
WARN DatabaseReaderConnection PreparedStatment not support by database: [Informix][Informix ODBC Driver][Informix]A syntax error has occurred.
WARN Database Reader java.sql.SQLException: [Informix][Informix ODBC Driver][Informix]A syntax error has occurred.
Â
Any query will produce this error, the query leading to the one I pasted above simply was:
select count(*)
from vbaudit;
Â
Iâll go look for the stack trace data now, wish me luck.
Â
Thanks,
E.
DEBUG NodeContainer Conversions 0:3 has new state: IDLE
DEBUG NodeContainer Setting dirty flag on Database Reader 0:3:8
DEBUG NodeContainer Setting dirty flag on Conversions 0:3
DEBUG KnimeResourceNavigator ROOT's workflow has changed WORKFLOW_DIRTY
DEBUG WorkflowEditor Workflow event triggered: WorkflowEvent [type=WORKFLOW_DIRTY;node=0:3;old=null;new=null;timestamp=Jan 22, 2010 6:09:12 PM]
DEBUG WorkflowRootEditPart WorkflowRoot: workflow changed, refreshing children/connections..
WARN Database Reader java.sql.SQLException: javax.crypto.BadPaddingException: Given final block not properly padded
DEBUG Database Reader java.sql.SQLException: javax.crypto.BadPaddingException: Given final block not properly padded
org.knime.core.node.InvalidSettingsException: java.sql.SQLException: javax.crypto.BadPaddingException: Given final block not properly padded
at org.knime.base.node.io.database.DBReaderNodeModel.configure(DBReaderNodeModel.java:187)
at org.knime.core.node.NodeModel.configure(NodeModel.java:928)
at org.knime.core.node.NodeModel.configureModel(NodeModel.java:878)
at org.knime.core.node.Node.configure(Node.java:1252)
at org.knime.core.node.workflow.SingleNodeContainer.nodeConfigure(SingleNodeContainer.java:410)
at org.knime.core.node.workflow.SingleNodeContainer.configure(SingleNodeContainer.java:333)
at org.knime.core.node.workflow.WorkflowManager.configureSingleNodeContainer(WorkflowManager.java:3019)
at org.knime.core.node.workflow.WorkflowManager.configureNodeAndSuccessors(WorkflowManager.java:3152)
at org.knime.core.node.workflow.WorkflowManager.loadNodeSettings(WorkflowManager.java:1016)
at org.knime.core.node.workflow.NodeContainer.applySettingsFromDialog(NodeContainer.java:896)
at org.knime.workbench.ui.wrapper.WrappedNodeDialog.doApply(WrappedNodeDialog.java:378)
at org.knime.workbench.ui.wrapper.WrappedNodeDialog.doOK(WrappedNodeDialog.java:329)
at org.knime.workbench.ui.wrapper.WrappedNodeDialog.access$3(WrappedNodeDialog.java:327)
at org.knime.workbench.ui.wrapper.WrappedNodeDialog$4.widgetSelected(WrappedNodeDialog.java:301)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:228)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3823)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3422)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
at org.eclipse.jface.window.Window.open(Window.java:801)
at org.knime.workbench.ui.wrapper.WrappedNodeDialog.open(WrappedNodeDialog.java:146)
at org.knime.workbench.editor2.actions.OpenDialogAction.runOnNodes(OpenDialogAction.java:153)
at org.knime.workbench.editor2.actions.AbstractNodeAction$1.run(AbstractNodeAction.java:138)
at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:178)
at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:150)
at org.eclipse.swt.widgets.Display.syncExec(Display.java:4251)
at org.knime.workbench.editor2.actions.AbstractNodeAction.run(AbstractNodeAction.java:135)
at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:583)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:500)
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3823)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3422)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2384)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2348)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2200)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:495)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:490)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.knime.product.rcp.KNIMEApplication.start(KNIMEApplication.java:112)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:386)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
Caused by: java.sql.SQLException: javax.crypto.BadPaddingException: Given final block not properly padded
at org.knime.core.node.port.database.DatabaseReaderConnection.getDataTableSpec(DatabaseReaderConnection.java:187)
at org.knime.base.node.io.database.DBReaderNodeModel.configure(DBReaderNodeModel.java:180)
... 55 more
Caused by: javax.crypto.BadPaddingException: Given final block not properly padded
at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at com.sun.crypto.provider.DESCipher.engineDoFinal(DashoA13*..)
at javax.crypto.Cipher.doFinal(DashoA13*..)
at org.knime.core.util.KnimeEncryption.decrypt(KnimeEncryption.java:188)
at org.knime.core.util.KnimeEncryption.decrypt(KnimeEncryption.java:163)
at org.knime.core.node.port.database.DatabaseConnectionSettings.createConnection(DatabaseConnectionSettings.java:205)
at org.knime.core.node.port.database.DatabaseReaderConnection.getDataTableSpec(DatabaseReaderConnection.java:153)
... 56 more
DEBUG NodeContainer Database Reader 0:3:8 has new state: IDLE
DEBUG NodeContainer Conversions 0:3 has new state: IDLE
Hi, Given final block not properly padded means that either the password or the masterkey is wrong⌠Can you please double-check that both phrases are entered correctly. Sorry, for this meaningless error message, we are going to fix that for KNIME 2.2. Please let me know, if it is working now!
Cheers, Thomas
Thanks for that hint, I suspected as much⌠Is there any way to reset and/or to skip the master key requirement entirely? It has done more harm than good so far, given that internally we use very generic connection values not worthy of any protection.
Hi E.,
sure, in the KNIME preference page âMaster Keyâ you can disable the master key en-/decryption. Sorry for this hassle, we are currently working on a better solution for propagating credential (user/password) through the pipeline.
Cheers, Thomas
Thanks for the hint! However, Iâm afraid it still wonât work - see new stack trace below, obtained after disabling the Master Key and restarting KNIME:
DEBUG OpenDialogAction Opening node dialog...
DEBUG NodeContainer Conversions 0:0 has new state: IDLE
DEBUG DatabaseConnectionSettings Opening database connection to "jdbc:odbc:COPYPROD"...
WARN DatabaseReaderConnection PreparedStatment not support by database: [Informix][Informix ODBC Driver][Informix]A syntax error has occurred.
DEBUG DatabaseReaderConnection PreparedStatment not support by database: [Informix][Informix ODBC Driver][Informix]A syntax error has occurred.
java.sql.SQLException: [Informix][Informix ODBC Driver][Informix]A syntax error has occurred.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
at sun.jdbc.odbc.JdbcOdbc.SQLPrepare(JdbcOdbc.java:4830)
at sun.jdbc.odbc.JdbcOdbcConnection.prepareStatement(JdbcOdbcConnection.java:475)
at sun.jdbc.odbc.JdbcOdbcConnection.prepareStatement(JdbcOdbcConnection.java:443)
at org.knime.core.node.port.database.DatabaseReaderConnection.getDataTableSpec(DatabaseReaderConnection.java:156)
at org.knime.base.node.io.database.DBReaderNodeModel.configure(DBReaderNodeModel.java:180)
at org.knime.core.node.NodeModel.configure(NodeModel.java:928)
at org.knime.core.node.NodeModel.configureModel(NodeModel.java:878)
at org.knime.core.node.Node.configure(Node.java:1252)
at org.knime.core.node.workflow.SingleNodeContainer.nodeConfigure(SingleNodeContainer.java:410)
at org.knime.core.node.workflow.SingleNodeContainer.configure(SingleNodeContainer.java:333)
at org.knime.core.node.workflow.WorkflowManager.configureSingleNodeContainer(WorkflowManager.java:3019)
at org.knime.core.node.workflow.WorkflowManager.configureNodeAndSuccessors(WorkflowManager.java:3152)
at org.knime.core.node.workflow.WorkflowManager.loadNodeSettings(WorkflowManager.java:1016)
at org.knime.core.node.workflow.NodeContainer.applySettingsFromDialog(NodeContainer.java:896)
at org.knime.workbench.ui.wrapper.WrappedNodeDialog.doApply(WrappedNodeDialog.java:378)
at org.knime.workbench.ui.wrapper.WrappedNodeDialog.doOK(WrappedNodeDialog.java:329)
at org.knime.workbench.ui.wrapper.WrappedNodeDialog.access$3(WrappedNodeDialog.java:327)
at org.knime.workbench.ui.wrapper.WrappedNodeDialog$4.widgetSelected(WrappedNodeDialog.java:301)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:228)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3823)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3422)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
at org.eclipse.jface.window.Window.open(Window.java:801)
at org.knime.workbench.ui.wrapper.WrappedNodeDialog.open(WrappedNodeDialog.java:146)
at org.knime.workbench.editor2.actions.OpenDialogAction.runOnNodes(OpenDialogAction.java:153)
at org.knime.workbench.editor2.actions.AbstractNodeAction$1.run(AbstractNodeAction.java:138)
at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:178)
at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:150)
at org.eclipse.swt.widgets.Display.syncExec(Display.java:4251)
at org.knime.workbench.editor2.actions.AbstractNodeAction.run(AbstractNodeAction.java:135)
at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:583)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:500)
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3823)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3422)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2384)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2348)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2200)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:495)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:490)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.knime.product.rcp.KNIMEApplication.start(KNIMEApplication.java:112)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:386)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
WARN Database Reader java.sql.SQLException: [Informix][Informix ODBC Driver][Informix]A syntax error has occurred.
DEBUG Database Reader java.sql.SQLException: [Informix][Informix ODBC Driver][Informix]A syntax error has occurred.
org.knime.core.node.InvalidSettingsException: java.sql.SQLException: [Informix][Informix ODBC Driver][Informix]A syntax error has occurred.
at org.knime.base.node.io.database.DBReaderNodeModel.configure(DBReaderNodeModel.java:187)
at org.knime.core.node.NodeModel.configure(NodeModel.java:928)
at org.knime.core.node.NodeModel.configureModel(NodeModel.java:878)
at org.knime.core.node.Node.configure(Node.java:1252)
at org.knime.core.node.workflow.SingleNodeContainer.nodeConfigure(SingleNodeContainer.java:410)
at org.knime.core.node.workflow.SingleNodeContainer.configure(SingleNodeContainer.java:333)
at org.knime.core.node.workflow.WorkflowManager.configureSingleNodeContainer(WorkflowManager.java:3019)
at org.knime.core.node.workflow.WorkflowManager.configureNodeAndSuccessors(WorkflowManager.java:3152)
at org.knime.core.node.workflow.WorkflowManager.loadNodeSettings(WorkflowManager.java:1016)
at org.knime.core.node.workflow.NodeContainer.applySettingsFromDialog(NodeContainer.java:896)
at org.knime.workbench.ui.wrapper.WrappedNodeDialog.doApply(WrappedNodeDialog.java:378)
at org.knime.workbench.ui.wrapper.WrappedNodeDialog.doOK(WrappedNodeDialog.java:329)
at org.knime.workbench.ui.wrapper.WrappedNodeDialog.access$3(WrappedNodeDialog.java:327)
at org.knime.workbench.ui.wrapper.WrappedNodeDialog$4.widgetSelected(WrappedNodeDialog.java:301)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:228)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3823)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3422)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
at org.eclipse.jface.window.Window.open(Window.java:801)
at org.knime.workbench.ui.wrapper.WrappedNodeDialog.open(WrappedNodeDialog.java:146)
at org.knime.workbench.editor2.actions.OpenDialogAction.runOnNodes(OpenDialogAction.java:153)
at org.knime.workbench.editor2.actions.AbstractNodeAction$1.run(AbstractNodeAction.java:138)
at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:178)
at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:150)
at org.eclipse.swt.widgets.Display.syncExec(Display.java:4251)
at org.knime.workbench.editor2.actions.AbstractNodeAction.run(AbstractNodeAction.java:135)
at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:583)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:500)
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3823)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3422)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2384)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2348)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2200)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:495)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:490)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.knime.product.rcp.KNIMEApplication.start(KNIMEApplication.java:112)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:386)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
Caused by: java.sql.SQLException: [Informix][Informix ODBC Driver][Informix]A syntax error has occurred.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3110)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253)
at org.knime.core.node.port.database.DatabaseReaderConnection.getDataTableSpec(DatabaseReaderConnection.java:165)
at org.knime.base.node.io.database.DBReaderNodeModel.configure(DBReaderNodeModel.java:180)
... 55 more
DEBUG NodeContainer Database Reader 0:0:8 has new state: IDLE
DEBUG NodeContainer Conversions 0:0 has new state: IDLE
Any further ideas? Same problem as before: Node stays in red, only thing Iâll get is a warning (âWARN DatabaseReaderConnection PreparedStatment not support by database: [Informix][Informix ODBC Driver][Informix]A syntax error has occurred.
WARN Database Reader java.sql.SQLException: [Informix][Informix ODBC Driver][Informix]A syntax error has occurred.â) and it simply wonât work. The DB nodes used to work in KINME 1.x, I should add.
Hi E.,
I assume you are using KNIME 2.1.1? From your stacktrace I see only two warnings, one states that PreparedStatements are not supported which is fine, the other one is an syntax error in the SQL statement. Can you please try to re-enter the password in the dialog and see what the node does? Can you please check if this is a problem with a table alias, for example try to execute âSELECT * FROM mytableâ, â(SELECT * FROM mytable) myaliasâ, or â(SELECT * FROM mytable) as myaliasâ. I currently have no clue where this error might come from.
Thanks again for your help!
Thomas
Hi E., some closer look into this issue showed that Informix databases do not support nested SQL statements. The solution is to use âtable(multiset(âŚ))â to wrap those queries. Since KNIME somehow auto-generates such statements, those are always surrounded by brackets. That means, this workaround does also not works in this case. Sorry, I need to check if I can find a general solution for this issue.
Thanks, Thomas