Loading...
MySQL 9.5 Reference Manual 9.5의 12.6 Error Message Character Set의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
이 섹션은 MySQL server가 에러 메시지를 구성할 때 문자 집합을 어떻게 사용하는지 설명합니다. 에러 메시지의 문자 집합이 아니라 언어에 대한 정보는 Section 12.12, “Setting the Error Message Language”를 참조하십시오. 에러 로깅 구성에 대한 일반적인 정보는 Section 7.4.2, “The Error Log”를 참조하십시오.
server는 에러 메시지를 다음과 같이 구성합니다:
message template은 UTF-8 (utf8mb3)을 사용합니다.
message template의 파라미터는 특정 에러 발생에 적용되는 값으로 치환됩니다:
테이블 이름이나 컬럼 이름과 같은 식별자는 내부적으로 UTF-8을 사용하므로 그대로 복사됩니다.
문자(nonbinary) 문자열 값은 그것의 문자 집합에서 UTF-8로 변환됩니다.
바이너리 문자열 값은 0x20에서 0x7E 범위에 있는 바이트는 그대로 복사되고, 그 범위를 벗어나는 바이트는 \x 16진수 인코딩을 사용합니다. 예를 들어, VARBINARY 유니크 컬럼에 0x41CF9F를 insert하려는 시도에서 duplicate-key 에러가 발생하면, 결과 에러 메시지는 일부 바이트가 16진수로 인코딩된 UTF-8을 사용합니다:
1Duplicate entry 'A\xCF\x9F' for key 1
한번 구성된 에러 메시지는 server에 의해 에러 로그에 기록되거나 client로 전송될 수 있습니다:
server가 에러 메시지를 에러 로그에 기록하면, 다른 문자 집합으로 변환하지 않고 구성된 그대로 UTF-8로 기록합니다.
server가 에러 메시지를 client 프로그램으로 전송하면, server는 그것을 UTF-8에서
character_set_results
시스템 변수에 의해 지정된 문자 집합으로 변환합니다.
character_set_results의 값이
NULL 또는
binary이면 변환이 발생하지 않습니다. 변수 값이
utf8mb3 또는 utf8mb4인 경우에도 변환이 발생하지 않는데, 이들 문자 집합은 메시지 구성에 사용되는 모든 UTF-8 문자를 포함하는 레퍼토리를 가지기 때문입니다.
문자를
character_set_results로 표현할 수 없는 경우, 변환 중에 일부 인코딩이 발생할 수 있습니다. 이 인코딩은 유니코드 코드 포인트 값을 사용합니다:
Basic Multilingual Plane (BMP) 범위
(0x0000에서 0xFFFF까지)의 문자는
\nnnn
표기법을 사용하여 기록됩니다.
BMP 범위를 벗어나는 문자
(0x10000에서
0x10FFFF까지)는
\+nnnnnn
표기법을 사용하여 기록됩니다.
client는
character_set_results를 설정하여 에러 메시지를 수신할 때 사용할 문자 집합을 제어할 수 있습니다. 이 변수는 직접 설정할 수도 있고, SET NAMES와 같은 수단을 통해 간접적으로 설정할 수도 있습니다.
character_set_results에 대한 자세한 내용은
Section 12.4, “Connection Character Sets and Collations”을 참조하십시오.
12.5 Configuring Application Character Set and Collation
12.7 Column Character Set Conversion