반응형
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 |