Loading...
MySQL 9.5 Reference Manual 9.5의 B.2 Error Information Interfaces의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
Error message는 서버 side 또는 클라이언트 side에서 발생할 수 있으며, 각 error message에는 Section B.1, “Error Message Sources and Elements”에 설명된 대로 error code, SQLSTATE 값, message string이 포함됩니다. 서버 side, 클라이언트 side, 그리고 서버와 클라이언트 간에 공유되는 global error 목록은 MySQL 9.5 Error Message Reference를 참조하십시오.
Program 내부에서 error를 검사할 때는 message string이 아니라 error code number나 symbol을 사용하십시오. message string은 자주 바뀌지는 않지만 변경될 수 있습니다. 또한 데이터베이스 관리자(database administrator)가 언어 설정을 변경하면 message string의 언어가 영향을 받습니다. 자세한 내용은 Section 12.12, “Setting the Error Message Language”를 참조하십시오.
MySQL의 error 정보는 서버 error log, SQL 레벨, 클라이언트 program 내부, 그리고 명령줄에서 확인할 수 있습니다.
서버 side에서는 일부 message가 error log용으로 사용됩니다. 서버가 log를 기록하는 위치와 방법을 설정하는 방법은 Section 7.4.2, “The Error Log”를 참조하십시오.
그 밖의 서버 error message는 클라이언트 program에 전송되며, Client Error Message Interface에 설명된 대로 이용 가능합니다.
특정 error code가 속한 범위에 따라 서버가 error message를 error log에 기록할지, 클라이언트로 전송할지가 결정됩니다. 이러한 범위에 대한 정보는 Error Code Ranges를 참조하십시오.
SQL 레벨에서 MySQL error 정보의 출처는 여러 가지가 있습니다:
SQL statement의 warning 및 error 정보는 SHOW WARNINGS 및
SHOW ERRORS statement를 통해 확인할 수 있습니다.
warning_count 시스템 변수는 error, warning, note의 개수를 나타냅니다
(단, sql_notes 시스템 변수가 비활성화된 경우 note는 제외됩니다).
error_count 시스템 변수는 error의 개수를 나타내며, warning과 note는 값에 포함되지 않습니다.
GET DIAGNOSTICS statement를 사용하면 diagnostics area의 진단 정보를 확인할 수 있습니다.
Section 15.6.7.3, “GET DIAGNOSTICS Statement”를 참조하십시오.
SHOW REPLICA STATUS statement의 output에는 replica 서버에서 발생한 replication error에 대한 정보가 포함됩니다.
SHOW ENGINE INNODB STATUS statement의 output에는
InnoDB 테이블에 대한
CREATE TABLE statement가 실패했을 경우,
가장 최근의 foreign key error에 대한 정보가 포함됩니다.
클라이언트 program은 두 가지 출처로부터 error를 받습니다:
MySQL 클라이언트 라이브러리 내부에서 발생하는 클라이언트 side error.
서버 side에서 발생하여 서버가 클라이언트로 전송하는 error. 이러한 error는 클라이언트 라이브러리 내에서 수신되며, host 클라이언트 program이 사용할 수 있도록 제공됩니다.
특정 error code가 속한 범위에 따라 그것이 클라이언트 라이브러리 내부에서 발생한 것인지, 아니면 서버로부터 클라이언트가 수신한 것인지가 결정됩니다. 이러한 범위에 대한 정보는 Error Code Ranges를 참조하십시오.
Error가 클라이언트 라이브러리 내부에서 발생했든 서버로부터 수신했든 관계없이, MySQL 클라이언트 program은 클라이언트 라이브러리 내의 C API function을 호출하여 error code, SQLSTATE 값, message string 및 기타 관련 정보를 얻습니다:
mysql_errno()는
MySQL error code를 반환합니다.
mysql_sqlstate()는
SQLSTATE 값을 반환합니다.
mysql_error()는
message string을 반환합니다.
mysql_stmt_errno(),
mysql_stmt_sqlstate(), 및
mysql_stmt_error()는
prepared statement에 대한 해당 error function입니다.
mysql_warning_count()는
가장 최근 statement에 대한 error, warning, note의 개수를 반환합니다.
클라이언트 라이브러리 error function에 대한 설명은 MySQL 9.5 C API Developer Guide를 참조하십시오.
MySQL 클라이언트 program은 error에 대해 다양한 방식으로 대응할 수 있습니다. 클라이언트는 사용자에게 error message를 표시하여 사용자가 수정 조치를 취할 수 있도록 하거나, 내부적으로 실패한 operation을 해결하거나 재시도하려 하거나, 다른 조치를 취할 수 있습니다. 예를 들어 (mysql 클라이언트 사용 시) 서버에 연결하지 못하면 다음과 같은 message가 표시될 수 있습니다:
1$> mysql -h no-such-host 2ERROR 2005 (HY000): Unknown MySQL server host 'no-such-host' (-2)
perror program은 명령줄에서 error number에 대한 정보를 제공합니다. Section 6.8.1, “perror — Display MySQL Error Message Information”를 참조하십시오.
1$> perror 1231 2MySQL error code MY-001231 (ER_WRONG_VALUE_FOR_VAR): Variable '%-.64s' 3can't be set to the value of '%-.200s'
MySQL NDB Cluster error의 경우 ndb_perror를 사용하십시오. Section 25.5.16, “ndb_perror — Obtain NDB Error Message Information”를 참조하십시오.
1$> ndb_perror 323 2NDB error code 323: Invalid nodegroup id, nodegroup already existing: 3Permanent error: Application error
B.1 Error Message Sources and Elements
B.3 Problems and Common Errors