Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 경고(Warning)를 억제하는 방법 – SQL_NOTES 변수 활용 가이드

MySQL을 사용하다 보면 존재하지 않는 테이블을 삭제하거나 중복 데이터를 처리할 때 다양한 경고 메시지가 출력됩니다. 이러한 경고를 화면에 표시하지 않고 억제(suppress)하고 싶다면 SQL_NOTES 시스템 변수를 활용하면 됩니다.

SQL_NOTES란 무엇인가?

SQL_NOTES는 MySQL의 세션 단위 시스템 변수로, 기본값은 1(ON)입니다. 이 값을 0(OFF)으로 설정하면 Note 수준의 경고 메시지가 더 이상 기록되거나 표시되지 않습니다. 주로 배치 작업이나 스크립트 실행 시 불필요한 경고 출력을 줄이기 위해 사용됩니다.

1단계: SQL_NOTES를 ON으로 설정하기

먼저 SQL_NOTES를 1로 설정하여 경고가 표시되는 상태를 만들어 보겠습니다.

mysql> SET sql_notes = 1;
Query OK, 0 rows affected (0.00 sec)

2단계: 존재하지 않는 테이블 삭제 시도

이제 존재하지 않는 테이블을 삭제해 보겠습니다. 아래 결과에서 확인할 수 있듯이, 경고 메시지가 함께 출력됩니다.

mysql> drop table if exists web.DemoTable;
Query OK, 0 rows affected, 1 warning (0.07 sec)

3단계: SHOW WARNINGS로 경고 내용 확인

발생한 경고의 상세 내용은 SHOW WARNINGS 명령어로 확인할 수 있습니다.

mysql> show warnings;

실행 결과는 다음과 같습니다.

+-------+------+-----------------------------------+
| Level | Code | Message |
+-------+------+-----------------------------------+
| Note | 1051 | Unknown table 'web.DemoTable' |
+-------+------+-----------------------------------+
1 row in set (0.00 sec)

'web.DemoTable'이라는 테이블이 존재하지 않는다는 Note 수준의 경고(코드 1051)가 발생한 것을 알 수 있습니다.

4단계: SQL_NOTES를 OFF로 설정하여 경고 억제하기

이제 경고를 억제하기 위해 SQL_NOTES를 0으로 설정합니다.

mysql> SET sql_notes = 0;
Query OK, 0 rows affected (0.00 sec)

설정 후 동일하게 존재하지 않는 테이블을 다시 삭제해 보겠습니다.

mysql> drop table if exists web.DemoTable;
Query OK, 0 rows affected (0.07 sec)

이전과 달리 warning 표시 없이 깔끔하게 실행된 것을 확인할 수 있습니다. 이것이 바로 MySQL에서 경고를 억제하는 방법입니다.

5단계: 경고 억제 후 SHOW WARNINGS 결과 확인

경고가 억제된 상태에서 다시 SHOW WARNINGS 명령어를 실행하면 더 이상 경고가 조회되지 않고 빈 결과(Empty set)가 반환됩니다.

mysql> show warnings;
Empty set (0.00 sec)

정리

MySQL에서 경고 메시지를 억제하는 핵심은 SET sql_notes = 0; 구문 하나입니다. 반대로 경고를 다시 보고 싶다면 SET sql_notes = 1;로 되돌리면 됩니다. 다만 이 설정은 세션 단위로 적용되므로, 새로운 연결에서는 기본값(ON)으로 초기화된다는 점을 유의해야 합니다. 자동화 스크립트나 로그 정리가 필요한 환경에서 유용하게 활용할 수 있습니다.