I have a workflow that works on the GUI, but when called from command line fails with the following error:
ERROR main Node Loading model settings failed: Could not find the [Db2] database driver.
org.knime.core.node.InvalidSettingsException: Could not find the [Db2] database driver.
at org.knime.database.node.connector.DBSessionSettings.validatePrimaryIds(DBSessionSettings.java:112)
at org.knime.database.node.connector.DBSessionSettings.validateSettings(DBSessionSettings.java:260)
at org.knime.database.node.connector.generic.DBConnectorSettings.validateSettings(DBConnectorSettings.java:124)
at org.knime.database.node.connector.AbstractDBConnectorNodeModel.validateSettingsInternal(AbstractDBConnectorNodeModel.java:283)
at org.knime.database.node.DBNodeModel.validateSettings(DBNodeModel.java:184)
at org.knime.core.node.Node.validateModelSettings(Node.java:690)
at org.knime.core.node.workflow.FileNativeNodeContainerPersistor.loadNCAndWashModelSettings(FileNativeNodeContainerPersistor.java:211)
at org.knime.core.node.workflow.FileSingleNodeContainerPersistor.loadNodeContainer(FileSingleNodeContainerPersistor.java:268)
at org.knime.core.node.workflow.WorkflowManager.postLoad(WorkflowManager.java:8519)
at org.knime.core.node.workflow.WorkflowManager.loadContent(WorkflowManager.java:8420)
at org.knime.core.node.workflow.WorkflowManager.postLoad(WorkflowManager.java:8535)
at org.knime.core.node.workflow.WorkflowManager.loadContent(WorkflowManager.java:8420)
at org.knime.core.node.workflow.WorkflowManager.load(WorkflowManager.java:8374)
at org.knime.core.node.workflow.WorkflowManager.load(WorkflowManager.java:8295)
at org.knime.core.node.workflow.WorkflowManager.load(WorkflowManager.java:8268)
at org.knime.core.node.workflow.WorkflowManager.loadProject(WorkflowManager.java:8113)
at org.knime.core.node.workflow.BatchExecutor.loadWorkflow(BatchExecutor.java:740)
at org.knime.core.node.workflow.BatchExecutor.runOne(BatchExecutor.java:907)
at org.knime.core.node.workflow.BatchExecutor.runAll(BatchExecutor.java:889)
at org.knime.core.node.workflow.BatchExecutor.mainRun(BatchExecutor.java:671)
at org.knime.product.headless.KNIMEBatchApplication.runBatchExecutor(KNIMEBatchApplication.java:127)
at org.knime.product.headless.KNIMEBatchApplication.start(KNIMEBatchApplication.java:80)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:653)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:590)
at org.eclipse.equinox.launcher.Main.run(Main.java:1461)
CLASSPATH includes C:\PROGRA~1\IBM\SQLLIB\java\db2jcc4.jar which contains the Db2 driver.
Hi, I’ve got a very similar error when trying to query a Databricks database:
ERROR main Node Loading model settings failed: Could not find the [Databricks] database driver.
org.knime.core.node.InvalidSettingsException: Could not find the [Databricks] database driver.
at org.knime.database.node.connector.DBSessionSettings.validatePrimaryIds(DBSessionSettings.java:111)
at org.knime.database.node.connector.DBSessionSettings.validateSettings(DBSessionSettings.java:259)
at org.knime.bigdata.spark.core.databricks.node.create.AbstractDatabricksSparkContextCreatorNodeSettings.validateSettings(AbstractDatabricksSparkContextCreatorNodeSettings.java:448)
at org.knime.bigdata.spark.core.databricks.node.create.DatabricksSparkContextCreatorNodeSettings2.validateSettings(DatabricksSparkContextCreatorNodeSettings2.java:150)
at org.knime.bigdata.spark.core.databricks.node.create.DatabricksSparkContextCreatorNodeModel2.validateAdditionalSettings(DatabricksSparkContextCreatorNodeModel2.java:222)
at org.knime.bigdata.spark.core.node.SparkNodeModel.validateSettings(SparkNodeModel.java:436)
at org.knime.core.node.Node.validateModelSettings(Node.java:676)
at org.knime.core.node.workflow.FileNativeNodeContainerPersistor.loadNCAndWashModelSettings(FileNativeNodeContainerPersistor.java:211)
at org.knime.core.node.workflow.FileSingleNodeContainerPersistor.loadNodeContainer(FileSingleNodeContainerPersistor.java:268)
at org.knime.core.node.workflow.WorkflowManager.postLoad(WorkflowManager.java:8464)
at org.knime.core.node.workflow.WorkflowManager.loadContent(WorkflowManager.java:8365)
at org.knime.core.node.workflow.WorkflowManager.postLoad(WorkflowManager.java:8480)
at org.knime.core.node.workflow.WorkflowManager.loadContent(WorkflowManager.java:8365)
at org.knime.core.node.workflow.WorkflowManager.load(WorkflowManager.java:8319)
at org.knime.core.node.workflow.WorkflowManager.load(WorkflowManager.java:8240)
at org.knime.core.node.workflow.WorkflowManager.load(WorkflowManager.java:8213)
at org.knime.core.node.workflow.WorkflowManager.loadProject(WorkflowManager.java:8058)
at org.knime.core.node.workflow.BatchExecutor.loadWorkflow(BatchExecutor.java:740)
at org.knime.core.node.workflow.BatchExecutor.runOne(BatchExecutor.java:907)
at org.knime.core.node.workflow.BatchExecutor.runAll(BatchExecutor.java:889)
at org.knime.core.node.workflow.BatchExecutor.mainRun(BatchExecutor.java:671)
at org.knime.product.headless.KNIMEBatchApplication.runBatchExecutor(KNIMEBatchApplication.java:127)
at org.knime.product.headless.KNIMEBatchApplication.start(KNIMEBatchApplication.java:80)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:657)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:594)
at org.eclipse.equinox.launcher.Main.run(Main.java:1447)
Like you I’ve also been able to get it to work using the GUI, and I’ve also been able to connect to other databases (Oracle) previously via the Command Line, so I’m confident my coding is correct.
So I’ve managed to resolve my issue, which I suspect will fix yours too…
Whilst the database drivers are installed the Command Line KNIME cannot find it. If you update your KNIME preferences file < File | Export Preferences… > then reference this .epf file in your command line string it should then work.
Below is the code that should work for you:
"C:\<PATH TO KNIME EXECUTABLE FILE>.exe"^
-consoleLog -reset -nosave -nosplash -preferences="D:\<PATH TO KNIME PREFERENCES FILE>.epf"^
-application org.knime.product.KNIME_BATCH_APPLICATION^
-workflowDir="D:/<PATH TO WORKFLOW DIRECTORY>"