# Exception in JDBC sink connector

**URL:** <https://community.cratedb.com/t/exception-in-jdbc-sink-connector/1826>\
**Category:** CrateDB\
**Created:** [August 1, 2024, 10:29am UTC](https://community.cratedb.com/t/exception-in-jdbc-sink-connector/1826 "2024-08-01T10:29:57Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![gorde.akshay](https://avatars.discourse-cdn.com/v4/letter/g/c4cdca/32.png) [@gorde.akshay](https://community.cratedb.com/u/gorde.akshay)\
**Post date:** [August 1, 2024, 10:29am UTC](https://community.cratedb.com/t/exception-in-jdbc-sink-connector/1826/1 "2024-08-01T10:29:57Z")

</div>

I have configured json file below

```json
{
  “name”: “cratedb-connector”,
  “config”: {
    “connector.class”: “io.confluent.connect.jdbc.JdbcSinkConnector”,
    “topics”: “mytopic”,
    “connection.url”: “jdbc:crate://localhost:5432/crate?user=crate”,
    “tasks.max”: “4”,
    “insert.mode”: “insert”,
    “table.name.format”: “mytable”,
    “pk.mode”: “kafka”,
    “pk.fields”: “eventday,resourceid,id”,
    “transforms”: “toJSON,wrapValue”,
    “transforms.toJSON.type”: “com.github.jcustenborder.kafka.connect.transform.common.ToJSON$Value”,
    “transforms.toJSON.schemas.enable”: “false”,
    “transforms.wrapValue.type”: “org.apache.kafka.connect.transforms.HoistField$Value”,
    “transforms.wrapValue.field”: “attributes”,
    “transforms”:“addAuditDate”,
    “transforms.addAuditDate.type”:“org.apache.kafka.connect.transforms.InsertField$Value”,
    “transforms.addAuditDate.timestamp.field”:“AUDITDATE”,
    “transforms.addAuditDate.timestamp.format”:“yyyy-MM-dd’T’HH:mm:ss’Z’”
  }
}

```

but it gives exception

Caused by: org.apache.kafka.connect.errors.DataException: JsonConverter with schemas.enable requires “schema” and “payload” fields and may not contain additional fields. If you are trying to deserialize plain JSON data, set schemas.enable=false in your converter configuration.

Any help appreciated.

---

<div class="post-metadata">

**Author:** ![matriv](https://sea2.discourse-cdn.com/flex020/user_avatar/community.cratedb.com/matriv/32/613_2.png) [@matriv](https://community.cratedb.com/u/matriv)\
**Post date:** [August 1, 2024, 1:09pm UTC](https://community.cratedb.com/t/exception-in-jdbc-sink-connector/1826/2 "2024-08-01T13:09:10Z")

</div>

Could you try to use the postgres stock driver instead of the crate one? so` "connection.url":“jdbc:postgres://localhost:5432/crate?user=crate”`

Please take a look at the example here: [cratedb-flink-jobs/src/main/java/io/crate/flink/demo/SimpleJdbcSinkJob.java at main · crate/cratedb-flink-jobs · GitHub](https://github.com/crate/cratedb-flink-jobs/blob/main/src/main/java/io/crate/flink/demo/SimpleJdbcSinkJob.java)

Additionally I found this open issue: [JDBC Sink: JsonConverter with schemas.enable requires "schema" and "payload" fields and may not contain additional fields. · Issue #574 · confluentinc/kafka-connect-jdbc · GitHub](https://github.com/confluentinc/kafka-connect-jdbc/issues/574) which maybe relates?

---

<div class="post-metadata">

**Author:** ![gorde.akshay](https://avatars.discourse-cdn.com/v4/letter/g/c4cdca/32.png) [@gorde.akshay](https://community.cratedb.com/u/gorde.akshay)\
**Post date:** [August 2, 2024, 6:01am UTC](https://community.cratedb.com/t/exception-in-jdbc-sink-connector/1826/3 "2024-08-02T06:01:14Z")

</div>

Hi matriv  
As per your suggestion, I have changed the driver but it gives the below exception

```java
[2024-08-02 05:51:26,785] ERROR [cratedb-connector|task-3] WorkerSinkTask{id=cratedb-connector-3} Task threw an uncaught and unrecoverable exception. Task is being killed and will not recover until manually restarted (org.apache.kafka.connect.runtime.WorkerTask:196)
org.apache.kafka.connect.errors.ConnectException: Exiting WorkerSinkTask due to unrecoverable exception.
	at org.apache.kafka.connect.runtime.WorkerSinkTask.deliverMessages(WorkerSinkTask.java:611)
	at org.apache.kafka.connect.runtime.WorkerSinkTask.poll(WorkerSinkTask.java:333)
	at org.apache.kafka.connect.runtime.WorkerSinkTask.iteration(WorkerSinkTask.java:234)
	at org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:203)
	at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:189)
	at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:244)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)
Caused by: org.apache.kafka.connect.errors.ConnectException: java.sql.SQLException: No suitable driver found for jdbc:postgres://localhost:5432/gra?user=crate
	at io.confluent.connect.jdbc.util.CachedConnectionProvider.getConnection(CachedConnectionProvider.java:62)
	at io.confluent.connect.jdbc.sink.JdbcDbWriter.write(JdbcDbWriter.java:64)
	at io.confluent.connect.jdbc.sink.JdbcSinkTask.put(JdbcSinkTask.java:90)
	at org.apache.kafka.connect.runtime.WorkerSinkTask.deliverMessages(WorkerSinkTask.java:581)
	... 10 more
Caused by: java.sql.SQLException: No suitable driver found for jdbc:postgres://localhost:5432/gra?user=crate
	at java.sql/java.sql.DriverManager.getConnection(Unknown Source)
	at java.sql/java.sql.DriverManager.getConnection(Unknown Source)
	at io.confluent.connect.jdbc.dialect.GenericDatabaseDialect.getConnection(GenericDatabaseDialect.java:256)
	at io.confluent.connect.jdbc.util.CachedConnectionProvider.newConnection(CachedConnectionProvider.java:84)
	at io.confluent.connect.jdbc.util.CachedConnectionProvider.getConnection(CachedConnectionProvider.java:54)
	... 13 more

```

---

<div class="post-metadata">

**Author:** ![matriv](https://sea2.discourse-cdn.com/flex020/user_avatar/community.cratedb.com/matriv/32/613_2.png) [@matriv](https://community.cratedb.com/u/matriv)\
**Post date:** [August 2, 2024, 10:09am UTC](https://community.cratedb.com/t/exception-in-jdbc-sink-connector/1826/4 "2024-08-02T10:09:41Z")

</div>

You would need to include the postgres jdbc driver in your build:  
[https://mvnrepository.com/artifact/org.postgresql/postgresql/42.7.3](https://mvnrepository.com/artifact/org.postgresql/postgresql/42.7.3)

---

<div class="post-metadata">

**Author:** ![gorde.akshay](https://avatars.discourse-cdn.com/v4/letter/g/c4cdca/32.png) [@gorde.akshay](https://community.cratedb.com/u/gorde.akshay)\
**Post date:** [August 2, 2024, 10:21am UTC](https://community.cratedb.com/t/exception-in-jdbc-sink-connector/1826/5 "2024-08-02T10:21:14Z")

</div>

Thank you so much for your help.

---

<div class="post-metadata">

**Author:** ![gorde.akshay](https://avatars.discourse-cdn.com/v4/letter/g/c4cdca/32.png) [@gorde.akshay](https://community.cratedb.com/u/gorde.akshay)\
**Post date:** [August 2, 2024, 12:25pm UTC](https://community.cratedb.com/t/exception-in-jdbc-sink-connector/1826/6 "2024-08-02T12:25:33Z")

</div>

Hi matriv

After adding postgresql-42.7.3.jar it throws the below exception

Caused by: org.apache.kafka.connect.errors.ConnectException: Sink connector ‘cratedb-connector’ is configured with ‘delete.enabled=false’ and ‘pk.mode=kafka’ and therefore requires records with a non-null Struct value and non-null Struct schema, but found record at (topic=‘Mytopic’,partition=0,offset=20,timestamp=1722577031564) with a HashMap value and null value schema.

---

<div class="post-metadata">

**Author:** ![Baur](https://sea2.discourse-cdn.com/flex020/user_avatar/community.cratedb.com/baur/32/284_2.png) [@Baur](https://community.cratedb.com/u/Baur)\
**Post date:** [August 6, 2024, 4:46am UTC](https://community.cratedb.com/t/exception-in-jdbc-sink-connector/1826/7 "2024-08-06T04:46:38Z")

</div>

Hi @gorde.akshay, could you please try adding

```auto
 "value.converter.schemas.enable": "true"

```

to your configuration?

---

<div class="post-metadata">

**Author:** ![gorde.akshay](https://avatars.discourse-cdn.com/v4/letter/g/c4cdca/32.png) [@gorde.akshay](https://community.cratedb.com/u/gorde.akshay)\
**Post date:** [August 6, 2024, 5:13am UTC](https://community.cratedb.com/t/exception-in-jdbc-sink-connector/1826/8 "2024-08-06T05:13:15Z")

</div>

HI, @Baur Already tried this, but the below error occurred.

Error encountered in task cratedb-connector-0. Executing stage ‘VALUE\_CONVERTER’ with class ‘org.apache.kafka.connect.json.JsonConverter’, where consumed record is {topic=‘mytopic’, partition=0, offset=5, timestamp=1722920943610, timestampType=CreateTime}. (org.apache.kafka.connect.runtime.errors.LogReporter:66)  
org.apache.kafka.connect.errors.DataException: JsonConverter with schemas.enable requires “schema” and “payload” fields and may not contain additional fields. If you are trying to deserialize plain JSON data, set schemas.enable=false in your converter configuration.

Due nature of our data we can not specify the schema.

Any help is appreciated.
