강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Không có người viết

Bài viết có thông tin người viết đã bị xóa.

Ứng dụng kiến trúc microservice (MSA) phát triển với Spring Cloud

Sử dụng Kafka Source Connect

No suitable driver 나오시는 분들

Viết

·

7K

·

Đã chỉnh sửa

3

https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/8.0.33/mysql-connector-j-8.0.33.jar

제 경우 mariadb 커넥터 대신 mysql 커넥터 사용해서 해결했습니다.

(... confluentXXX/share/java/kafka 폴더에 위치)


정말.. 하루종일 아래 예외로 애먹었네여..

Error while starting connector ...

No suitable driver found for jdbc:mysql://localhost:3307/mydb

 

mariadb 버전별 커넥터를 5개정도 해봐도 안되어서

자포자기한 채로 mysql 커넥터를 사용하니 되었습니다 ㅠㅠ

자세한 버전 정보입니다. (윈도우)

kafka : 2.13-3.4.0

kafka-connect-jdbc : 10.7.2

confluent : 7.4.0

mariaDB : 10.11

java : 17 

 

설정 정보입니다.

confluent/etc/kafka/connect-distributed.properties

89번 행 근처
plugin.path=\C:\\Work\\confluentinc-kafka-connect-jdbc-10.7.2\\lib

 

confluent/bin/windows/kafka-run-class.bat

97번 행 근처
rem classpath addition for LSB style path
if exist "%BASE_DIR%\share\java\kafka\*" (
	call :concat "%BASE_DIR%\share\java\kafka\*"
)

(...)

122번 행 근처
rem Log4j settings
IF ["%KAFKA_LOG4J_OPTS%"] EQU [""] (
	if exist %~dp0../../etc/kafka/tools-log4j.properties (
		set KAFKA_LOG4J_OPTS=-Dlog4j.configuration=file:%~dp0../../etc/kafka/tools-log4j.properties
	) else (
		set KAFKA_LOG4J_OPTS=-Dlog4j.configuration=file:%BASE_DIR%/etc/kafka/tools-log4j.properties
	)
) ELSE (
  rem create logs directory
  IF not exist "%LOG_DIR%" (
      mkdir "%LOG_DIR%"
  )
  set KAFKA_LOG4J_OPTS=-Dlog4j.configuration=file:%~dp0../../etc/kafka/tools-log4j.properties
)

 

confluent/bin/windows/connect-distributed.bat

28번 행 근처
rem Log4j settings
IF ["%KAFKA_LOG4J_OPTS%"] EQU [""] (
	set KAFKA_LOG4J_OPTS=-Dlog4j.configuration=file:%BASE_DIR%/etc/kafka/connect-log4j.properties -Dlog4j.config.dir=%BASE_DIR%/etc/kafka
)


POST Request

{
  "name":"my-source-connect",
  "config":{
    "connector.class" : "io.confluent.connect.jdbc.JdbcSourceConnector",  
    "connection.url":"jdbc:mysql://localhost:3307/mydb",
    "connection.user":"root",
    "connection.password":"1234",
    "mode":"incrementing",
    "incrementing.column.name":"id",
    "table.whitelist":"users",
    "topic.prefix":"my_topic_",
    "tasks.max":"1"
  }
}
spring-bootjpa아키텍처spring-cloudkafkamsa

Câu trả lời 2

8

저도 같은 문제로 고생해서 제가 해결한 방법 공유드립니다.

결론부터 말씀드리면 url의 mysql 부분을 mariadb로 변경해서 해결했습니다.

"connection.url":"jdbc:mariadb://localhost:3306/mydb"

kafka-connect가 정확히 어떻게 드라이버를 찾는지는 모르겠으나 프로토콜이 mysql이면 mariadb jdbc를 잘 못찾는 듯합니다.

https://github.com/confluentinc/kafka-connect-jdbc/blob/master/src/main/java/io/confluent/connect/jdbc/dialect/MySqlDatabaseDialect.java#L52

https://github.com/confluentinc/kafka-connect-jdbc/blob/master/src/main/java/io/confluent/connect/jdbc/dialect/DatabaseDialectProvider.java#L171

저도 mysql 드라이버로 시도했을땐 드라이버는 찾던데, 특정버전 이후로 tx-isolation-> transaction-isolation 변수로 변경된 것 때문에 다른 오류가 뜨더라구요. 그래서 어쩔수 없이 mariadb driver 사용하면서 url 부분 변경하니 작동됐습니다.

mysql driver에서는 transaction-isolation을 찾는데, mariadb에서 tx-isolation 변수만 있어 생긴 에러라고 합니다.
찾아보니 mariadb도 최신버전부터 변경된 변수로 적용한다는데, 저는 brew를 통해서 설치한지라 최신버전을 설치할 수 없었습니다.

마지막으로 제 실행환경 공유합니다.(mac)

kafka : stable 3.4.0
kafka-connect-jdbc : 10.7.24
mariaDB : 11.0.2-MariaDB Homebrew
java : openjdk-17

-5

안녕하세요, 인프런 AI 인턴이에요.

해당 오류는 JDBC 드라이버가 추가되지 않아서 발생하는 오류입니다. jdbc 드라이버를 추가해보세요.

마리아DB 버전별 드라이버 링크는 아래와 같아요.
https://mariadb.com/downloads/#connectors
또한, mysql 커넥터를 사용하여 오류를 해결하셨다고 하니, 드라이버 파일이 필요하시다면 mysql 커넥터를 다운받아 사용하시면 됩니다.

참고로, confluentXXX/share/java/kafka 폴더에 위치시키셨으니 해당 경로를 활용하시기 바랍니다.

더 자세한 오류 메시지와 함께 문제가 해결되었는지 알려주시면 더욱 도움될 것 같습니다.

좋은 하루 되세요!

Không có người viết

Bài viết có thông tin người viết đã bị xóa.

Đặt câu hỏi