Looking at the solr start logs, I can see that the classes i'm including
the in solrconfig.xml are being loaded:

2022-09-11 02:07:05.108 INFO
 (coreLoadExecutor-21-thread-1-processing-n:172.18.0.5:8983_solr) [c:col1
s:shard2 r:core_node4 x:col1_shard2_replica_n2] o.a.s.c.SolrResourceLoader
Added 1 libs to classloader, from paths: [/opt/solr/dist]

Also, the jdbc library loads fine and is usable when I use the DIH endpoint.


Query:
jdbc(connection="jdbc:mariadb://<host>:3306/<db>",sql="select id from tbl",
sort="id ASC", driver="org.mariadb.jdbc.Driver", user="<user>",
password="<pass>")

Error:
""Failed to load JDBC driver for 'org.mariadb.jdbc.Driver'""

solrconfig.xml
<lib dir="${solr.install.dir}/dist/" regex="mariadb-java-client-.*\.jar" />
<expressible name="jdbc"
class="org.apache.solr.client.solrj.io.stream.JDBCStream"/>

Cheers,

/************************************
*       James Austin Greene
*  www.jamesaustingreene.com
*              336-lol-nerd
************************************/


On Fri, Sep 9, 2022 at 5:01 PM Joel Bernstein <joels...@gmail.com> wrote:

> You may be having classloader issues. I'm not sure where you have the
> driver jar, but it may need to be copied into the lib directory with core
> Solr jars.
>
>
> Joel Bernstein
> http://joelsolr.blogspot.com/
>
>
> On Fri, Sep 9, 2022 at 4:58 PM Joel Bernstein <joels...@gmail.com> wrote:
>
> > Can you post the stack trace from the log?
> >
> > It looks like the JDBCStream is registered, but the stack trace
> > may provide some more info on why the driver didn't load.
> >
> > Joel Bernstein
> > http://joelsolr.blogspot.com/
> >
> >
> > On Fri, Sep 9, 2022 at 12:51 PM James Greene <
> ja...@jamesaustingreene.com>
> > wrote:
> >
> >> I'm still unable to get the JDBC stream to work.  I've verified that
> >> 'jdbc'
> >> shows up in the plugin list:
> >>
> >> http://localhost:8983/solr/col1/stream?action=PLUGINS
> >>
> >> When using the DIH I use the jdbc driver:
> >> org.mariadb.jdbc.Driver
> >>
> >> With connection string:
> >> jdbc:mysql://{{host}}:{{port}}/{{database}}
> >>
> >> I am able to get DIH pulling data from mariadb with that connection
> >> string.
> >>
> >> However using the same connection string in the streaming expression:
> >>     jdbc(connection="jdbc:mysql://mariadb:3306/db",sql="select id from
> tbl
> >> order by id asc limit 1", sort="id asc",
> driver="org.mariadb.jdbc.Driver")
> >>
> >> I get the error:
> >>     "EXCEPTION": "Failed to load JDBC driver for
> >> 'org.mariadb.jdbc.Driver'"
> >>
> >> I tried upgrading jdbc connector to 3x version and using the connection
> >> string "jdbc:mariadb://<host>:<port>/<db>" and get the same error
> message.
> >>
> >>
> >>
> >>
> >>
> >> On Thu, Sep 8, 2022 at 10:16 PM Joel Bernstein <joels...@gmail.com>
> >> wrote:
> >>
> >> > The jdbc stream was removed from the standard expression library for
> >> > security reasons. It is still in the jars though and can be included
> >> > through a change in the solrconfig.xml.
> >> >
> >> > This jira describes how to plugin an expression:
> >> >
> >> > https://issues.apache.org/jira/browse/SOLR-9103
> >> >
> >> > The class is: org.apache.solr.client.solrj.io.stream.JDBCStream
> >> >
> >> >
> >> >
> >> > Joel Bernstein
> >> > http://joelsolr.blogspot.com/
> >> >
> >> >
> >> > On Thu, Sep 8, 2022 at 6:54 PM James Greene <
> >> ja...@jamesaustingreene.com>
> >> > wrote:
> >> >
> >> > > I'm on solr 8.11.1 and trying to use the 'jdbc' streaming expression
> >> as
> >> > > documented here:
> >> > >
> https://solr.apache.org/guide/8_11/stream-source-reference.html#jdbc
> >> > >
> >> > > When I try to run a jdbc stream expression I get the error:
> >> > > 'function 'jdbc' is unknown (not mapped to a valid TupleStream'
> >> > >
> >> > > Here is an example of the expression i'm trying to run:
> >> > >
> >> jdbc(connection="jdbc:mysql://mariadb:3306/threatquotient2",sql="select
> >> > id
> >> > > from data order by id asc limit 1", sort="id asc"
> >> > > driver="org.mariadb.jdbc.Driver")
> >> > >
> >> > > I use the mariadb jdbc driver to get data from our mariadb instance
> >> using
> >> > > the data import handler so the jdbc driver should be property
> loaded.
> >> > >
> >> >
> >>
> >
>

Reply via email to