반응형

SQL 오류 (1067): Invalid default value for 'XXXXX'

라는 오류가 발생해서 테이블 수정이 안되는 현상입니다.

MySQL에서 발생하는 "Invalid default value (1067)" 오류에 대한 해결 방법을 설명하겠습니다:

오류 발생 원인

이 오류는 주로 다음과 같은 상황에서 발생합니다:

  • TIMESTAMP나 DATETIME 컬럼에 잘못된 기본값을 설정할 때
  • MySQL의 sql_mode에 NO_ZERO_DATE나 NO_ZERO_IN_DATE가 설정되어 있을 때

해결 방법

1. SQL Mode 확인

SHOW VARIABLES LIKE 'sql_mode';

 

2. 테이블 필드 추가/수정 시 올바른 구문 사용

-- 잘못된 방법
ALTER TABLE table_name MODIFY COLUMN created_at timestamp NULL DEFAULT 'NULL';
-- 올바른 방법
ALTER TABLE table_name MODIFY COLUMN created_at timestamp NULL DEFAULT NULL;

 

3. PHP에서 테이블 생성/수정 시

// SQL 모드 임시 변경
$sql = "SET sql_mode = ''";
mysqli_query($conn, $sql);
// 테이블 변경 쿼리 실행
$sql = "ALTER TABLE your_table ADD COLUMN created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP";
mysqli_query($conn, $sql);

 

4. 기본값 설정 시 주의사항

  • TIMESTAMP/DATETIME 필드의 경우 'CURRENT_TIMESTAMP' 사용
  • NULL 허용 시 'DEFAULT NULL' 사용
  • 날짜/시간 값은 적절한 형식 사용

 

***해결 방법***

서버 관리자일 경우 mysql에 관리자 권한 접속 후 아래 명령허 입력후 테이블 수정 하면 정상 작동 확인

SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'NO_ZERO_IN_DATE',''));
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'NO_ZERO_DATE',''));

 

 

반응형

'MYSQL' 카테고리의 다른 글

mysql custom 값으로 정렬하기  (0) 2020.04.06
group_concat  (0) 2012.02.05
mysql CONCAT  (0) 2011.05.22
union  (0) 2011.03.28
만두남