Sometimes when we follow the default steps to install Solr the MySQL JDBC libraries are missed out and we end up getting the following error in the log files.
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
We can get things working by following these steps.
Install the missing libraries
apt-get install libmysql-java
Find the required Jar files by using the following command
dpkg-query -L libmysql-java
This will give an output like the following
/.
/usr
/usr/share
/usr/share/java
/usr/share/java/mysql-connector-java-5.1.38.jar
/usr/share/doc
/usr/share/doc/libmysql-java
/usr/share/doc/libmysql-java/copyright
/usr/share/doc/libmysql-java/README.gz
/usr/share/doc/libmysql-java/changelog.Debian.gz
/usr/share/maven-repo
/usr/share/maven-repo/mysql
/usr/share/maven-repo/mysql/mysql-connector-java
/usr/share/maven-repo/mysql/mysql-connector-java/5.1.38
/usr/share/maven-repo/mysql/mysql-connector-java/5.1.38/mysql-connector-java-5.1.38.pom
/usr/share/maven-repo/mysql/mysql-connector-java/debian
/usr/share/maven-repo/mysql/mysql-connector-java/debian/mysql-connector-java-debian.pom
/usr/share/java/mysql.jar
/usr/share/java/mysql-connector-java.jar
/usr/share/maven-repo/mysql/mysql-connector-java/5.1.38/mysql-connector-java-5.1.38.jar
/usr/share/maven-repo/mysql/mysql-connector-java/debian/mysql-connector-java-debian.jar
From the above, the two jars mysql.jar and mysql-connector-java.jar are the ones which is needed.
create a soft link to the library path of your solr installation. (in this case, /opt/solr-6.6.0 )
cd /opt/solr-6.6.0/server/lib
ln -s /usr/share/java/mysql-connector-java-5.1.38.jar /opt/solr-6.6.0/server/lib
ln -s /usr/share/java/mysql.jar /opt/solr-6.6.0/server/lib
Add the relevant path to your solrconfig.xml
<lib dir="${solr.install.dir:../../../..}/server/lib" regex=".*\.jar" />
restart Solr & you are all set.
In some cases, you will get an error
Caused by: java.sql.SQLException: Illegal value for setFetchSize().
This can be addressed by adding batchSize=”-1″ to the data source declaration.
ie,