검색어 MariaDB에 대한 글을 날짜를 기준으로 정렬하여 표시합니다. 관련순 정렬 모든 글 표시
검색어 MariaDB에 대한 글을 날짜를 기준으로 정렬하여 표시합니다. 관련순 정렬 모든 글 표시

2024-01-31

MYSQL 중국 간체자 에러에 대한 정리

java.sql.BatchUpdateException: Data truncation: Incorrect string value: \xF0... [서비스네임].[테이블명].[컬럼명] at row 1
위와 같은 에러가 발생되었는데 MYSQL 전송시 이모지 데이터와 다르게 중국 간체자데이터로 인한 문제같은경우 좀 확인이 까다로운것 같음
찾아본 관련 내용을 정리해보면
  • 잘못된 문자열 값이 항상 \xF0으로 시작됨
  • 중국어 간체자(GB2312)
    • 간자체(음과 뜻이 같은데 획이 간략화된 문자)
    • 확장 중국어 문자는 4바이트 영역을 사용
  • MYSQL 접속후에 'SHOW VARIABLES' 명령을 입력하여 언어셋 확인가능
    • 테이블속성을 보면 Charset과 컬럼이 UTF8MB4
    • Collation이 utf8mb4_unicode_ci나 general ci
    • 하지만 조회된 character_set_*과 collation_*로 시작되는 언어셋이 다른경우 왠지 안되는것 같은 느낌
  • set names은 mysql 도움말에 따르면 아래의 효과
    • 타겟 서버와 설정이 어떤지 모르는경우 그냥 변경가능하는 듯
    • GB2321은 중국어 간체, BIG5는 중국어 번체용 인코딩
    • 쿼리 실행전에 'set names [언어셋]' 실행하면
    • character_set_client|results|connection 언어셋 바뀌는 듯?
  • 한중일 케릭터셋 리스트(CJK)은 MYSQL버젼에 따라 다를수 있다고 함

2023-10-11

MySQL 'SQLSyntaxErrorException: You have an error in your SQL syntax' 역슬래시(,backslash) 에러내용 정리

SAP PO와 MySQL 연계 인터페이스에서 역슬래시(₩,backslash)데이터로 인해 발생된 에러에 대해 정리해보았습니다.

최초 에러내용은
Unable to execute statement for table or stored procedure. '[테이블명]' (Structure '[상위노드명]' due to java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near...

Receiver JDBC Adapter의 채널 접속정보 셋팅은
jdbc:mysql://[아이피]:[포트]/[서비스네임]?serverTimezone=Asia/Seoul&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&autoReconnect=ture
이렇습니다.

전에 정리했던 'SAP PO에서 UTF8B4 데이터처리를 어떻게 해야할까?' 내용에서의 셋팅이 기억이 나서 혹시나 characterEncoding=utf8 → utf8mb4로 변경해서 테스트해보니 에러가 나는군요..
JDBC message processing failed; reason Error when attempting to get processing resources: com.sap.aii.af.lib.util.concurrent.ResourcePoolException: Unable to create new pooled resourace: DriverManagerException: Cannot establish connection with the registered driver. com.mysql.jdbc.Driver returns: Unsupported character encoding utf8mb4.: SQLException: Unsupported character encoding utf8mb4

2023-01-26

SAP PO에서의 MySQL,MariaDB 문법에러(백슬래시)

에러내용

"java.sql.SQLSyntaxErrorException: you have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near..."

원인

데이터 문제인지는 예상했지만 데이터에 'TEST.₩' 이렇게 들어가 있을때 에러가 발생되었는데 ₩를 제거하고 전송하면 성공되며 자바에서의 백슬래시나 따옴표 등 문자에서는 별도의 처리(이스케이프시퀀스)가 필요하다고 하는데요.
₩' 이렇게 데이터가 들어갈때 '로 출력이 될텐데 왜 에러나는건지 모르겠습니다.

그외 관련 글입니다.

2022-02-19

SAP PO에서 UTF8MB4 데이터처리를 어떻게 해야할까요?


타겟이 MYSQL에서 UTF8MB4관련 에러내용을 본적이 있습니다.
"Incorrect string value: '\xFO\x90\x8D\x83\...' for column '<column name> at row 1"

이전에도 PO매핑 등에서 데이터로 인한 에러가 발생된 경우는 있는데요. 요즘들어 이모지? 등과 같은 유니코드 U+10000이상인 데이터들 원인으로 인한 에러들을 자주 보게 되는것 같습니다.
소스, 타겟 DB나 테이블을 생성 시 서버단에 언어셋과 컬럼타입등을 동일하게 맞추고 인터페이스가 개발이 된다면 데이터로 인한 매핑에러는 거의 없을것 같은데 현실은 그렇지 않은것 같고 이런에러들을 PO안에서 해결을 해야할때가 발생되는것 같은데요. 인터넷에 찾아본 내용들을 간략하게 정리해보았습니다.
정확하지 않는 부분이 있는경우 댓글달아주시면 수정하겠습니다.