MySQL에서 에러는 크게 세 가지로 구분된다.
MySQL에서 에러 문구는 아래처럼 반환되며, 각 구조는 다음과 같다.
ERROR <에러코드> (<SQL State>): Error Message ERROR 1062 (23000): Duplicate entry...
MySQL 에러는 에러 코드별로 구분지어 확인 할 수 있다.
MySQL은 다양한 스토리지 엔진(InnoDB, MyISAM 등)을 지원하는 구조이기 때문에, 동일한 SQL 동작이라도 스토리지 엔진에 따라 반환되는 에러 코드가 달라질 수 있다.
이처럼 스토리지 엔진에 따라 에러 발생 유무나 반환 코드가 달라질 수 있기 때문에, MySQL에서는 에러 코드에 지나치게 의존한 에러 핸들링은 지양하는게 좋다.
SQLSTATE는 5자리의 영문자 또는 숫자로 구성된 표준화된 에러 코드 체계로, ANSI SQL 표준에서 정의한 DBMS(데이터베이스 관리 시스템) 에러 코드이다.
SQL State는 ANSI SQL의 표준 에러 코드이기 때문에 동일한 에러에 대해 일정한 SQL State을 반환한다. 이러한 이유로 에러 헨들링시에는 SQL State 코드를 활용하는게 가장 이상적이다.
(단, HY 코드는 주의하고 사용해야 하며, 이 경우에는 에러 코드을 사용하는게 좋다)
사람이 읽을 수 있는 에러 메시지이다. Error Message는 MySQL 버전에 따라 다르게 출력될 수 있다. 이러한 이유로 Error Message를 사용한 서비스 개발은 지양하는게 좋다.