Elasticsearch JDBC-River Mysql - 没有为jdbc找到合适的驱动程序

时间:2014-08-26 13:00:17

标签: macos elasticsearch mysql-connector elasticsearch-jdbc-river

我正在尝试将mysql服务器中的mysql表导入到我的MAC OSX Mavericks上的elasticsearch。

  1. 我已经用homebrew
  2. 安装了elasticsearch 1.3.1
  3. 使用elasticsearch插件安装jdbc-river 1.3.0.4 --install
  4. 已安装jdk 1.7.0_67
  5. 将mysql-connector-java-5.1.28-bin.jar下载到 $ ES_HOME / plugins / jdbc(我必须创建文件夹'插件'和 ' JDBC'我自己)并为.jar文件授予chmod 777权限。
  6. 然后我跑了./bin/elasticsearch并在邮递员中调用此命令以创建一条河:
  7. PUT请求。

    网址:localhost:9200 / _river / my_jdbc_river / _meta

    原始数据:

    {
        "type" : "jdbc",
        "jdbc" : {
            "url" : "jdbc:mysql://localhost:3306/<databaseName>",
            "user" : "<MysqlUserName>",
            "password" : "<MysqlUserPass",
            "sql" : "select * from <TableName>"
        } 
    }
    

    我在终端的elasticsearch日志中收到以下错误:

        [2014-08-26 15:38:39,300][ERROR][org.xbib.elasticsearch.river.jdbc.strategy.simple.SimpleRiverSource] while opening read connection: jdbc:mysql://localhost:3306/xcollector No suitable driver found for jdbc:mysql://localhost:3306/xcollector
    java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/xcollector
        at java.sql.DriverManager.getConnection(DriverManager.java:596)
        at java.sql.DriverManager.getConnection(DriverManager.java:215)
        at org.xbib.elasticsearch.river.jdbc.strategy.simple.SimpleRiverSource.getConnectionForReading(SimpleRiverSource.java:196)
        at org.xbib.elasticsearch.river.jdbc.strategy.simple.SimpleRiverSource.execute(SimpleRiverSource.java:315)
        at org.xbib.elasticsearch.river.jdbc.strategy.simple.SimpleRiverSource.fetch(SimpleRiverSource.java:287)
        at org.xbib.elasticsearch.plugin.feeder.jdbc.JDBCFeeder.fetch(JDBCFeeder.java:335)
        at org.xbib.elasticsearch.plugin.feeder.jdbc.JDBCFeeder.executeTask(JDBCFeeder.java:179)
        at org.xbib.elasticsearch.plugin.feeder.AbstractFeeder.newRequest(AbstractFeeder.java:362)
        at org.xbib.elasticsearch.plugin.feeder.AbstractFeeder.newRequest(AbstractFeeder.java:53)
        at org.xbib.pipeline.AbstractPipeline.call(AbstractPipeline.java:87)
        at org.xbib.pipeline.AbstractPipeline.call(AbstractPipeline.java:14)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
    

    我已经关注谷歌的很多帖子试图找到问题的原因,有没有人知道我错过了什么?

    如果有人知道这个程序是否可以更自动地部署,就像拥有某种包管理器一样(如node.js的npm)。

    提前致谢,

1 个答案:

答案 0 :(得分:3)

因此,您的问题的线索是您必须创建文件夹&#34;插件&#34;和&#34; jdbc&#34;在步骤4中,安装mysql river插件时会创建这两个文件夹。我可以看到你的错误消息中正确安装了mysql river插件 - 它正在运行但是找不到jdbc驱动程序。

在驱动器上查找正确的文件夹 - $ ES_HOME应包含以下文件夹:

bin
config
data
lib
logs
plugins

如果没有,那么$ ES_HOME设置不正确。将您的jdbc驱动程序按照指示复制到正确的文件夹中,您应该能够解决此问题。