71

我正在使用 Pentaho 数据集成,我正在尝试通过 MySQL 连接到我的数据库,但是当我这样做时,我收到了这个错误.....

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

Exception while loading class
org.gjt.mm.mysql.Driver


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

Exception while loading class
org.gjt.mm.mysql.Driver


    at org.pentaho.di.core.database.Database.normalConnect(Database.java:368)
    at org.pentaho.di.core.database.Database.connect(Database.java:317)
    at org.pentaho.di.core.database.Database.connect(Database.java:279)
    at org.pentaho.di.core.database.Database.connect(Database.java:269)
    at org.pentaho.di.core.database.DatabaseFactory.getConnectionTestReport(DatabaseFactory.java:86)
    at org.pentaho.di.core.database.DatabaseMeta.testConnection(DatabaseMeta.java:2464)
    at org.pentaho.ui.database.event.DataHandler.testDatabaseConnection(DataHandler.java:533)
    at sun.reflect.GeneratedMethodAccessor55.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.pentaho.ui.xul.impl.AbstractXulDomContainer.invoke(AbstractXulDomContainer.java:329)
    at org.pentaho.ui.xul.impl.AbstractXulComponent.invoke(AbstractXulComponent.java:139)
    at org.pentaho.ui.xul.impl.AbstractXulComponent.invoke(AbstractXulComponent.java:123)
    at org.pentaho.ui.xul.swt.tags.SwtButton.access$500(SwtButton.java:26)
    at org.pentaho.ui.xul.swt.tags.SwtButton$4.widgetSelected(SwtButton.java:119)
    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:378)
    at org.pentaho.ui.xul.swt.tags.SwtDialog.show(SwtDialog.java:304)
    at org.pentaho.di.ui.core.database.dialog.XulDatabaseDialog.open(XulDatabaseDialog.java:115)
    at org.pentaho.di.ui.core.database.dialog.DatabaseDialog.open(DatabaseDialog.java:62)
    at org.pentaho.di.ui.spoon.delegates.SpoonDBDelegate.newConnection(SpoonDBDelegate.java:493)
    at org.pentaho.di.ui.spoon.delegates.SpoonDBDelegate.newConnection(SpoonDBDelegate.java:478)
    at org.pentaho.di.ui.spoon.Spoon.newConnection(Spoon.java:7770)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.pentaho.ui.xul.impl.AbstractXulDomContainer.invoke(AbstractXulDomContainer.java:329)
    at org.pentaho.ui.xul.impl.AbstractXulComponent.invoke(AbstractXulComponent.java:139)
    at org.pentaho.ui.xul.impl.AbstractXulComponent.invoke(AbstractXulComponent.java:123)
    at org.pentaho.ui.xul.swt.tags.SwtMenuitem.access$100(SwtMenuitem.java:27)
    at org.pentaho.ui.xul.swt.tags.SwtMenuitem$1.widgetSelected(SwtMenuitem.java:77)
    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:1183)
    at org.pentaho.di.ui.spoon.Spoon.start(Spoon.java:6966)
    at org.pentaho.di.ui.spoon.Spoon.main(Spoon.java:567)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.pentaho.commons.launcher.Launcher.main(Launcher.java:134)
Caused by: org.pentaho.di.core.exception.KettleDatabaseException: 
Exception while loading class
org.gjt.mm.mysql.Driver

    at org.pentaho.di.core.database.Database.connectUsingClass(Database.java:423)
    at org.pentaho.di.core.database.Database.normalConnect(Database.java:352)
    ... 50 more
Caused by: java.lang.ClassNotFoundException: org.gjt.mm.mysql.Driver
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at org.pentaho.di.core.database.Database.connectUsingClass(Database.java:414)
    ... 51 more

如果我使用 SQLite 作为我的连接类型,它可以工作,但是当我去探索它时没有返回数据。所以我的问题是如何让 MySQL 工作或使用 SQLite 获取数据?

我错过了图书馆或课程吗?

4

9 回答 9

145

我在尝试从 Pentaho 查询 MySQL 数据库时遇到了同样的问题。

连接到数据库 [Local MySQL DB] 时出错:org.pentaho.di.core.exception.KettleDatabaseException:尝试连接到数据库时发生错误

加载类 org.gjt.mm.mysql.Driver 时出现异常

扩展@user979331 的帖子,解决方案是:

  1. 下载与您的水壶版本兼容MySQL Java 连接器/驱动程序
  2. 解压缩zip文件(在我的例子中是mysql-connector-java-5.1.31.zip
  3. 复制.jar文件(mysql-connector-java-5.1.31-bin.jar)并将其粘贴到您的Lib文件夹中:

    PC: C:\Program Files\pentaho\design-tools\data-integration\lib

    Mac: /应用程序/数据集成/lib

重新启动 Pentaho(数据集成)并重新测试 MySQL 连接。

其他人的其他有趣回复也可能有所帮助:

于 2012-10-11T10:32:50.943 回答
14

缺少驱动程序文件。

对于刚开始使用 PDI 的人来说,这个错误真的很常见。

驱动程序进入 \pentaho\design-tools\data-integration\libext\JDBC for PDI。如果您使用 Pentaho 套件中的其他工具,您可能需要将驱动程序复制到这些工具的其他位置。作为参考,以下是其他一些设计工具的相应文件夹:

  • 聚合设计器:\pentaho\design-tools\aggregation-designer\drivers
  • 元数据编辑器:\pentaho\design-tools\metadata-editor\libext\JDBC
  • 报表设计器:\pentaho\design-tools\report-designer\lib\jdbc
  • 架构工作台:\pentaho\design-tools\schema-workbench\drivers

如果此转换或作业将在另一个机器上运行,例如测试或生产服务器,请不要忘记在部署注意事项中包括复制 jar 文件和重新启动 PDI 或数据集成服务器。

于 2012-09-18T15:02:02.203 回答
12

原来我会丢失一个名为 mysql-connector-java-5.1.2.jar 的类,我将它添加到这个文件夹(C:\Program Files\pentaho\design-tools\data-integration\lib)并且它与 MySQL 一起使用连接和我的数据和表格出现。

于 2012-07-24T16:07:43.033 回答
9

您需要下载mysql-connector-java-5.1.46.tar.gz,而不是最新版本。Pentaho 使用的 Driver 类不包含在 mysql-connector-java-8.xx.yy 版本中。

于 2018-07-21T16:09:40.653 回答
7

除了此处的其他答案之外,您还可以在 Ubuntu (14.04) 上执行以下操作:

sudo apt-get install libmysql-java

这将下载mysql-connector-java-5.x.x.jar/usr/share/java/,我相信它也会自动创建一个名为mysql-connector-java.jar.

然后,在中创建一个符号链接/your/path/to/data-integration/lib/

ln -s /usr/share/java/mysql-connector-java.jar /your/path/to/data-integration/lib/mysql-connector-java.jar

于 2015-09-30T19:14:32.777 回答
3

目前,有一个简单的方法可以解决这个问题:

  1. 转到ToolsMarketPlace并搜索“PDI MySQL 插件”
  2. 安装它(这将在这里自动安装缺少的驱动程序data-integration\plugins\databases\pdi-mysql-plugin\lib:)
  3. 重启 Pentaho
  4. 完毕。
于 2020-05-05T18:47:51.170 回答
1

为了简洁准确,请下载与您的MySql版本兼容的兼容 jdbc (.jar) 文件并将其放在lib文件夹中。例如 MySQL 8.0.2 下载Connector/J 8.0.20

于 2020-07-10T19:42:39.887 回答
0

以上答案很有帮助,但由于未知原因,它们似乎不起作用。因此,如果您已经在系统上安装了 MySql 工作台,则无需下载 jar 文件并努力使用正确的版本,只需转到

C:\Program Files (x86)\MySQL\Connector J 8.0

并复制mysql-connector-java-8.0.12(不管它是什么版本)该位置的 jar 文件并将其粘贴到C:\Program Files\pentaho\design-tools\data-integration\lib

于 2019-03-05T12:44:13.703 回答
0

首先,您需要下载与您的 pentaho 版本兼容的 Mysql 连接器。然后将其粘贴到data-integration/lib文件夹并重新启动您的 pentaho。检查这个 https://help.pentaho.com/Documentation/8.1/Setup/JDBC_Drivers_Reference#MY_SQL

于 2019-08-05T06:11:32.553 回答