인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

logt님의 프로필 이미지

작성한 질문수

카프카 완벽 가이드 - 커넥트(Connect) 편

JDBC Sink Connector 생성 실습 - 01

table.name.format에 관하여..

해결된 질문

작성

·

110

·

수정됨

0

안녕하세요 선생님. 강의 잘 보고 있습니다.

JDBC Sink Connector의 데이터베이스 스키마 설정 문제가 있네요. 찾아보니 JDBC Sink Connector의 내부적인 문제 같습니다... 구글링을 해보니 table.name.format에서 .구분자를 기준으로 데이터베이스 스키마를 지정해주는 것이 저를 포함하여 문제가 있는 사람들도 있던데... 결론은 그냥 되는 config로 사용하자 입니다.

 

아래의 내용은 혹여나 저와 같은 문제가 생기신다면 참고해 주세요. 공식 포럼과 이슈를 확인해봐도 명확하게 문제의 원인이 무엇인지에 대한 설명은 없습니다. 해결 방안만 있어요..

 

JDBC Sink Connector 생성하여 Key값을 가지는 Customers 토픽에서 테이블로 데이터 Sink

해당 github 링크의 코드를 확인해보시면 connection.url에서 이미 스키마 om_sink를 바라보고 있는데, table.name.format 설정에서 또다시 om_sink 하위에 table을 만드려는 시도에 Exception이 발생합니다.

 

CREATE TABLE om_sink.`om_sink`.`customers_sink_base`라는 SQL 문을 실행하게 되고 이에 exception이 발생합니다.

 

에러 발생

=> om_sink의 om_sink의 customers_sink_base 테이블 생성을 시도함.

CREATE TABLE `om_sink`.`om_sink`.`customers_sink_base` -- 이렇게 실행됨.
image.png

 

따라서 connection.url 또는, table.name.format 둘 중 한 군데에는 om_sink를 빼줘야 할 것 같아요.

image.png

 

수정 후 정상 동작

image.pngimage.png

답변 2

1

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

제 환경 세팅에서는 문제없이 동작합니다만, 혹 JDBC Sink connector가 실습 환경 버전과 다르게 되어 있나요?

근데 오류 내용으로만 보면 말씀하신대로 schema 중복으로 보입니다. 뭔가 버전업이 되면서 이부분이 수정된 것 같습니다만, 암튼 실습 환경 세팅에서는 잘 동작합니다.

만약에 위와 같은 오류가 발생하시는 분이 있다면 참조하시면 좋을 것 같습니다. 좋은 정보 감사합니다.

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다.

LogT님께서 지적하신 것처럼 JDBC Sink Connector 설정에서 table.name.format에 스키마 이름이 중복으로 들어가 SQL 에러가 발생하는 문제가 있습니다. 이 문제는 MySQL에서 테이블을 생성할 때 스키마 이름이 두 번 포함되는 상황에서 발생합니다. connection.url에서 이미 스키마를 지정했기 때문에, table.name.format 설정에서는 테이블 이름만 지정해야 합니다.

이러한 설정 오류를 방지하기 위해 다음과 같이 설정을 조정할 수 있습니다:

  1. connection.url에서 이미 스키마(om_sink)를 지정했다면, table.name.format에는 테이블 이름만 사용해야 합니다:

    "table.name.format": "customers_sink_base"
    
  2. 반대로, table.name.format에서 스키마와 테이블 이름을 모두 지정하고 싶다면, connection.url은 데이터베이스만 지정하여야 설정 충돌을 피할 수 있습니다.

위와 같은 문제가 발생했을 가능성이 높으며, 설정을 수정한 후 정상 동작을 확인할 수 있습니다.

관련된 유사한 문제를 다룬 질문의 링크를 첨부합니다:
- Git 코드에 ‘,’, ‘빠져 있습니다.

이 질문에서는 구문 오류와 관련된 문제를 다루고 있으며, 설정 파일 내의 구문 오류가 유사한 문제를 유발할 수 있음을 설명하고 있습니다.

문제가 해결되지 않는 경우, 기존의 설정 파일을 검토하여 불필요한 중복 설정 또는 잘못된 구성 번호를 수정하는 것이 좋습니다. 또 다른 설정 문자열 내의 특수문자나 구문도 확인해 보세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

logt님의 프로필 이미지
logt
질문자

음.. 저 분 코드도 스키마 중복인데 어떻게 실행이 됐을까요.. 현재 저의 모든 프로그램 버전은 선생님 강의와 일치한데..

 

추가 결론) 좌우지간, 검색해보니 그냥 connection.url에 데이터베이스 스키마를 작성하던지, RegExRouter를 사용해서 조작하라네요.

 

참고 문서:

#1

#2

#3(아직 open 중인 이슈...)

logt님의 프로필 이미지

작성한 질문수

질문하기