Kafka Connect JDBC Sink Connector - java.sql.SQLException No suitable driver found
Master System Design with Codemia
Enhance your system design skills with over 120 practice problems, detailed solutions, and hands-on exercises.
Introduction
java.sql.SQLException: No suitable driver found in a Kafka Connect JDBC sink setup almost always means the worker cannot load the database JDBC driver class. The connector configuration may look correct, but without the right driver jar on the Connect worker classpath or plugin path, the sink cannot open a database connection.
Core Sections
What the error actually means
The JDBC sink connector knows how to map Kafka records into SQL operations, but it does not ship every database vendor driver itself. When the connector reads connection.url, it asks JDBC to find a driver that understands that URL. If no loaded driver claims that URL format, you get the exception.
Typical reasons are:
- the database driver jar is missing from the worker
- the jar exists but is in the wrong plugin directory
- the driver version is incompatible with the Java runtime or database
- the
connection.urlscheme is wrong, so the correct driver never matches it
Put the driver where Kafka Connect can load it
For self-managed Connect, the safest pattern is to keep the JDBC connector and the vendor driver in the same plugin directory that is listed in plugin.path.
A common directory layout is:
After adding the driver jar, restart the worker. Connect does not automatically rescan plugin directories in a running process.
Verify the JDBC URL is valid for the target driver
Even with the right jar installed, a malformed JDBC URL produces the same error class. Make sure the URL matches the vendor format exactly.
If you accidentally use postgres://... or a vendor-specific format from a different driver, Connect may log “no suitable driver” even though the jar is present.
Distinguish connector jars from driver jars
This error often appears when teams install the JDBC sink connector and assume that is enough. It is not. The sink connector provides the integration logic. The database driver provides the actual JDBC implementation for PostgreSQL, MySQL, SQL Server, Oracle, and similar systems.
In other words, these are two separate dependencies:
- Kafka Connect JDBC sink plugin
- database vendor JDBC driver
You need both.
Check the worker logs, not just the REST API response
The REST API usually gives the top-level error, but the worker logs are more useful. They often reveal whether Connect failed to isolate the plugin, could not parse the URL, or loaded the wrong driver version.
Useful checks include:
- confirm the plugin directory is included in
plugin.path - confirm the driver jar is physically present on every worker node
- confirm the worker was restarted after the jar was added
- confirm the Java version used by Connect is compatible with the driver jar
If you run distributed Connect, remember that every worker that may execute the task needs the same plugin and driver installation.
Validate outside Connect if needed
When in doubt, test the JDBC URL and driver with a small Java program. That isolates the database driver problem from the Kafka Connect layer.
If this small check fails with the same exception, the problem is below Kafka Connect and the fix is in driver installation or URL formatting.
Common Pitfalls
- Installing the JDBC sink connector but forgetting the separate database vendor driver jar.
- Copying the driver jar to one worker node in a distributed cluster while other workers still lack it.
- Changing
plugin.pathor adding jars without restarting the Connect worker process. - Using a malformed or vendor-mismatched
connection.url, which prevents the correct driver from claiming the URL. - Debugging only through the Connect REST response and ignoring the more specific worker logs.
Summary
- “No suitable driver found” usually means the JDBC driver is missing, misplaced, incompatible, or paired with a bad JDBC URL.
- The Kafka Connect JDBC plugin and the database vendor driver are separate dependencies.
- Put the driver jar in a plugin path that the worker actually loads, then restart the worker.
- Verify the JDBC URL format carefully for the target database.
- If needed, test the connection in plain Java first to isolate the failure.

