글자수 제한 해제 시 발생하는 MySQL 1067 오류 (sqlmode 설정) 해결
페이지 정보

본문
그누보드 게시판의 글자수 제한을 늘리기 위해 필드 형식을 변경할 때 발생하는 #1067 오류의 원인과 웹호스팅 환경에서의 해결 방법을 알아봅니다.
MySQL #1067 오류 원인 및 확인 방법
phpMyAdmin 등을 통해 게시판 필드 형식을 변경하거나 테이블을 수정할 때 발생하는 #1067 - Invalid default value for 'wr_datetime' 오류는 서버 환경의 MySQL sql_mode 설정과 날짜/시간 컬럼의 기본값 간의 충돌 때문에 발생합니다.
1. 주요 원인
- MySQL 서버의
sql_mode에NO_ZERO_IN_DATE또는NO_ZERO_DATE같은 모드가 설정되어 있는 경우,0000-00-00 00:00:00과 같은 유효하지 않은 날짜/시간 기본값을 허용하지 않아 저장이 차단됩니다. - 그누보드 게시판에서 글자수 제한 해제 등을 위해 필드 구조를 수정(
text타입 변경 등)할 때 이 기본값 제약 조건에 걸려 에러가 발생합니다.
2. 서버 환경 및 설정 확인
- 사용 중인 웹호스팅 환경에 따라 개인이 MySQL 설정 파일을 직접 수정할 수 없는 경우가 많습니다. 웹호스팅 이용자의 경우 이 문제는 서버 환경 차이에서 비롯된 것으로 확인됩니다.
- 개인이 직접 MySQL 설정을 변경할 권한이 없는 웹호스팅 환경이라면, 호스팅 업체에 문의하여 MySQL 설정 파일에서
sql_mode세팅 값을 변경해 달라고 요청해야 합니다.
MySQL sql_mode 설정 확인 방법
MySQL 서버 환경에서 글자수 제한 해제 등 작업 중 발생하는 #1067 오류와 관련된 sql_mode 설정(특히 NO_ZERO_DATE, NO_ZERO_IN_DATE)을 확인하려면 데이터베이스에 접속하여 아래의 명령어를 수행합니다.
확인 명령어
show variables like 'sql_mode'\G
위 명령어를 실행하여 현재 서버에 설정된 모드 값에 NO_ZERO_DATE나 NO_ZERO_IN_DATE가 포함되어 있는지 확인할 수 있습니다.
웹호스팅 환경에서 MySQL 설정 파일(my.cnf 또는 my.ini)을 직접 수정할 권한이 없는 경우, 사용자가 임의로 sql_mode를 변경하는 것은 불가능합니다. 이 문제를 해결하기 위해 다음 절차를 권장합니다.
해결 절차
- 호스팅 업체 고객센터 문의: 사용 중인 웹호스팅 업체의 고객센터에 문의하여 현재 데이터베이스의
sql_mode설정(특히NO_ZERO_DATE,NO_ZERO_IN_DATE등)으로 인해 데이터 저장 시#1067오류가 발생하고 있음을 알립니다. - 설정 변경 요청: 호스팅 업체 측에 서버의
sql_mode값을 조정해 줄 것을 요청해야 합니다.
대안: 세션 단위 설정 변경 호스팅 업체에서 전역 설정을 변경해주지 않는 경우, phpMyAdmin 등에서 테이블 구조를 수정하기 직전에 아래 쿼리를 실행하여 해당 세션에서만 제약을 일시적으로 해제할 수 있습니다.
SET SESSION sql_mode = '';
이후 테이블 수정 작업을 진행하면 오류를 우회할 수 있습니다.
주의사항:
- 웹호스팅은 서버 관리 권한이 업체에 있으므로, 업체 정책에 따라 전역 설정 변경이 거부될 수 있습니다.
- 세션 단위 변경은 해당 연결(세션)에만 적용되므로, 작업 시마다 쿼리를 실행해야 할 수 있습니다.
상황별 판단 및 행동 지침
- 내 상황: 그누보드 게시판 글자수 제한 해제(필드 타입 변경) 중
#1067 - Invalid default value for 'wr_datetime'오류 발생 - 선택 기준: 서버의
sql_mode설정에NO_ZERO_DATE또는NO_ZERO_IN_DATE가 포함되어 날짜 기본값과 충돌하는지 확인 - 다음 행동: 웹호스팅 환경이라 직접 설정 변경이 어렵다면 호스팅 업체에 문의하여
sql_mode세팅 변경 요청
실전 FAQ
- Q. 웹호스팅 이용 중인데 개인이
sql_mode를 직접 변경할 수 없나요?- 웹호스팅 환경은 서버 관리 권한이 업체에 있으므로 개인이 직접 설정 파일을 수정하기 어렵습니다. 이 경우 호스팅 업체 고객센터에 문의하여 설정을 변경해 달라고 요청해야 합니다.
- Q. 호스팅사에서
sql_mode전역 설정을 변경해 주지 않으면 어떻게 하나요?- 일부 웹호스팅 업체는 정책상 전역 설정을 변경해 주지 않을 수 있습니다. 이 경우 phpMyAdmin 등에서 테이블 구조를 수정하기 직전에
SET SESSION sql_mode = '';쿼리를 실행하여 해당 세션에서만 제약을 일시적으로 해제하는 방법을 시도해 볼 수 있습니다.
- 일부 웹호스팅 업체는 정책상 전역 설정을 변경해 주지 않을 수 있습니다. 이 경우 phpMyAdmin 등에서 테이블 구조를 수정하기 직전에
함께 보면 좋은 글
- MySQL 5.7+ 환경 phpMyAdmin 그누보드 wrcontent 필드 변경 1067 에러 해결
- MySQL 5.x 업그레이드 후 발생하는 그누보드 1364 오류 해결 방법
- MySQL 쿼리 에러 발생 시 파일명과 라인 번호를 함께 출력하여 디버깅하는 방법
참고자료
기타 참고자료
- alkhwa-113.tistory.com — MYSQL SQL 오류(1067): Invalid default value for 'datetime'
- m.blog.naver.com — MySQL alter table에서 "Error Code: 1067. Invalid default value" 날 때 : 네이버 블로그
- mandooya.com — SQL 오류 (1067): Invalid default value for 'XXXXX' 해결 방법 — 만두야닷컴
- patiencelee.tistory.com — MySQL SQL Error 1067 42000: Invaild default value for... — PatienceLee
- m.blog.naver.com — MySQL/MariaDB sql_mode 설정 변경 : 네이버 블로그
- lifeonguide.tistory.com — MySQL SQL 모드 (sql_mode)와 클라이언트별 설정 방법
- phpschool.com — PHPSCHOOL-Q&A > 리눅스/서버/설치/설정 질문과답변
- 이전글그누보드 레이아웃 수정 후 빈 공간 발생 및 캐시 문제 해결 26.10.24
- 다음글영카트 설치 시 ppclix64 파일 퍼미션 권한 오류 해결 방법 26.10.22
댓글목록
등록된 댓글이 없습니다.