Pentaho数据集成SQL连接


69

我正在使用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获取数据?

我想念图书馆还是上课?

Answers:


138

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

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

加载类org.gjt.mm.mysql.Driver时发生异常

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

  1. 下载与您的水壶版本兼容MySQL Java连接器/驱动程序
  2. 解压压缩文件(在我的情况下,它是mysql-connector-java-5.1.31.zip
  3. 复制的.jar文件(使用mysql-connector-java的5.1.31-bin.jar),并粘贴在你的文件夹:

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

    Mac: / Applications / data-integration / lib

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

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


1
杜德,你太棒了!
Stormsson 2013年

4
我粘贴了jar文件的最新连接,但错误仍然存​​在
noobie-php,

1
@Surya不,对不起,听起来像是另外一个问题。您可以在此处尝试在StackOverflow上发布新问题,并提供更多详细信息(您的精确配置,Spoon版本等),以便开发人员可以解决该问题。
nelsonic 2014年

1
您救了我的老兄,很好的答案
jemsnaban '16

6
当前最新版本没有* -bin.jar,因此请在此处参考先前版本。
奈-9

14

缺少驱动程序文件。

对于刚开始使用PDI的人们来说,这种错误确实很常见。

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

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

如果此转换或作业将在另一个盒子(例如测试服务器或生产服务器)上运行,请不要忘记在部署注意事项中包括复制jar文件并重新启动PDI或Data Integration Server。


12

事实证明,我会缺少一个名为mysql-connector-java-5.1.2.jar的类,我在此文件夹中添加了该文件夹(C:\ Program Files \ pentaho \ design-tools \ data-integration \ lib),并且它可以与MySQL一起使用连接和我的数据和表格出现。


用勺子工作gr8,但在安排作业时出现问题。找不到驱动器。我已经将驱动程序包含在tomcat \ webapps \ pentaho \ WEB-INF \ lib中,但是仍然..任何想法都缺少mysql驱动程序的位置..?
Surya 2014年

我最终从文件名中删除了该版本(不确定是否有帮助),然后必须按照以下答案设置通用连接stackoverflow.com/a/52163066/349659
CTS_AE,2016年

而已。我得到了jar文件并解决了我的问题。谢谢您
thatsallfolks


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


1

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

  1. 转到ToolsMarketPlace并搜索“ PDI MySQL插件”
  2. 安装它(这将自动在此处安装缺少的驱动程序:data-integration\plugins\databases\pdi-mysql-plugin\lib
  3. 重新启动Pentaho
  4. 做完了

对于最新版本的Pentaho(PDI),这是您需要采取的唯一步骤,它安装了所有必需的驱动程序,并且在重新启动后即可正常运行
Efrain Plaza

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



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.