Я новичок в соединителе раковины. Когда я использую соединитель приемника для получения данных, я получаю следующую ошибку.
https://docs.oracle.com/error-help/db/ora-01400/ Ошибка: 1400, позиция: 0, SQL = INSERT INTO "RENTED_PRODUCT"("PRODUCT_NO", "RENT_START_DATE", "RENT_END_DATE", "OWNER_NICKNAME", "BORROWER_NICKNAME", "STATUS", "REVIEW_STATUS") VALUES(:1 ,: 2 ,:3 ,:4 ,:5 ,:6 ,:7 ), Исходный SQL = INSERT INTO "RENTED_PRODUCT"("PRODUCT_NO", "RENT_START_DATE", "RENT_END_DATE", "OWNER_NICKNAME", "BORROWER_NICKNAME", "STATUS" ,"REVIEW_STATUS") VALUES(?,?,?,?,?,?,?), Сообщение об ошибке = ORA-01400: невозможно вставить NULL в ("TEST1"."RENTED_PRODUCT"."RENTED_PRODUCT_NO") в io.confluent.connect.jdbc.sink.JdbcSinkTask.getAllMessagesException(JdbcSinkTask.java:165) в io.confluent.connect.jdbc.sink.JdbcSinkTask.put(JdbcSinkTask.java:111) ... еще 12 [2023-12-07 10:20:17,979] ОШИБКА [rentedproduct2-sink-connect|task-0] WorkerSinkTask{id=rentedproduct2-sink-connect-0} Задача вызвала неперехваченное и неустранимое исключение. Задача завершается и не будет восстановлена до перезапуска вручную (org.apache.kafka.connect.runtime.WorkerTask:212). org.apache.kafka.connect.errors.ConnectException: выход из WorkerSinkTask из-за неустранимого исключения. в org.apache.kafka.connect.runtime.WorkerSinkTask.deliverMessages(WorkerSinkTask.java:618) в org.apache.kafka.connect.runtime.WorkerSinkTask.poll(WorkerSinkTask.java:336) в org.apache.kafka.connect.runtime.WorkerSinkTask.iteration(WorkerSinkTask.java:237) в org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:206) в org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:204) в org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:259) в org.apache.kafka.connect.runtime.isolation.Plugins.lambda$withClassLoader$1(Plugins.java:181) в java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) в java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) в java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) в java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) в java.base/java.lang.Thread.run(Thread.java:834) Соединитель имеет следующую конфигурацию
{ "name": "rentedproduct2-sink-connect", "конфигурация": { "connector.class": "io.confluent.connect.jdbc.JdbcSinkConnector", "tasks.max": "1", "темы": "RENTED_PRODUCT", "connection.url": "jdbc:oracle:thin:@localhost:1521/xe", "connection.user": "test1", "connection.password": "test1", "insert.mode": "вставить", "pk.mode": "нет", "auto.create": "ложь", "key.converter": "org.apache.kafka.connect.json.JsonConverter", "value.converter": "org.apache.kafka.connect.json.JsonConverter", "key.converter.schemas.enable":"false", "value.converter.schemas.enable":"true" } } RENTED_PRODUCT_NO, соответствующий PK, не существует в схеме и полезных данных
Формат данных, отправляемых в тему, следующий
{ "схема": { "тип": "структура", "поля": [ { "тип": "int64", «необязательно»: правда, "поле": "PRODUCT_NO" }, { "тип": "строка", «необязательно»: правда, "field": "RENT_START_DATE" }, { "тип": "строка", «необязательно»: правда, "поле": "RENT_END_DATE" }, { "тип": "строка", «необязательно»: правда, "field": "OWNER_NICKNAME" }, { "тип": "строка", «необязательно»: правда, "field": "BORROWER_NICKNAME" }, { "тип": "строка", «необязательно»: правда, "поле": "СТАТУС" }, { "тип": "строка", «необязательно»: правда, "поле": "REVIEW_STATUS" } ], «необязательно»: ложь, "name": "RENTED_PRODUCT" }, "полезная нагрузка": { «номер_продукта»: 1, "rent_start_date": "12.12.2023 11:00", "rent_end_date": "15 декабря 2023 12:00", "owner_nickname": "Оуэнер", "borrower_nickname": "Заемщик", "статус": "Используется", "review_status": "Нет" } } Пожалуйста, помогите мне. Уже сутки не могу найти причину
Создание таблицы с помощью JPA
создать таблицу rented_product (номер rented_product_no (19,0) не равен нулю, ник_заемщика varchar2 (255 символов) не нуль, ник_владельца varchar2 (255 символов) не равен нулю, номер product_no (19,0) не равен нулю, временная метка rent_end_date не равна нулю, временная метка rent_start_date не равна нулю, review_status varchar2 (255 символов), статус varchar2 (255 символов), первичный ключ (rented_product_no)) часть объекта
@Id @SequenceGenerator( имя = "SEQ_GENERATOR", имя последовательности = "RENTEDPRODUCT_SEQ", размер выделения = 1 ) @GeneratedValue(стратегия = GenerationType.SEQUENCE, генератор = «SEQ_GENERATOR») частный Долгосрочно сданный в арендуПродуктНет; @Column (обнуляемый = ложь) частный Длинный продуктНет; @Column (обнуляемый = ложь) @JsonFormat(shape = JsonFormat.Shape.STRING, шаблон = «гггг-ММ-дд ЧЧ: мм», часовой пояс = «Азия/Сеул») частный LocalDateTime rentStartDate; @Column (обнуляемый = ложь) @JsonFormat(shape = JsonFormat.Shape.STRING, шаблон = «гггг-ММ-дд ЧЧ: мм», часовой пояс = «Азия/Сеул») частный LocalDateTime rentEndDate; @Column (обнуляемый = ложь) частная строка OwnerNickname; @Column (обнуляемый = ложь) частная строка заемщикаNickname; @Enumerated(EnumType.STRING) статус частного статуса; @Enumerated(EnumType.STRING) частный обзор статуса обзор статуса; Когда я сделал это с MySQL, все прошло хорошо, но по мере того, как мы переходим к Oracle, PK с использованием последовательности продолжает переходить в Null
Мобильная версия