반응형
MySQL Alter 테이블에서 오류가 발생했습니다.잘못된 NULL 값 사용
기존 테이블:
+-----------------+---------------+------+-----+---------+-------------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+---------------+------+-----+---------+-------------------+
| creation_date | timestamp | YES | | NULL |
테이블을 이렇게 바꾸고 싶었어요.
ALTER TABLE enterprise MODIFY creation_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
하지만 다음과 같은 오류가 발생했습니다.
7행의 ERROR 1138 (22004) : NULL 값이 잘못 사용되었습니다.
문제는 YES였던 NULL을 NOT NULL로 변경했을 때 발생하는 것 같습니다.컬럼을 드롭하고 나중에 추가해야 합니까?
값이 NULL인 행이 거의 없는 것 같습니다.모든 null 값을 해당 열의 기본 날짜로 업데이트한 다음 변경을 시도합니다.
이거 드셔보세요
--update null value rows
UPDATE enterprise
SET creation_date = CURRENT_TIMESTAMP
WHERE creation_date IS NULL;
ALTER TABLE enterprise
MODIFY creation_date TIMESTAMP NOT NULL
DEFAULT CURRENT_TIMESTAMP;
이 쿼리는 NO가 될 때까지 사용할 수 없습니다.
NULL
의 값creation_date
기둥.
의 갱신creation_date
컬럼에 기본 날짜를 지정한 다음 테이블을 변경합니다.
이것처럼.
UPDATE enterprise SET creation_date = CURRENT_TIMESTAMP WHERE creation_date IS NULL;
ALTER TABLE enterprise MODIFY creation_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
단순히, 테이블 구조가 데이터로 가득 차면 변경할 수 없습니다.해결 방법:
1) (table_name에서 삭제) 또는 (update table_name set new_value where condition )에 의해 모든 데이터를 삭제합니다.
2) ( modify or change )를 사용하여 테이블 구조를 갱신합니다.
언급URL : https://stackoverflow.com/questions/22971586/mysql-alter-table-causes-error-invalid-use-of-null-value
반응형
'source' 카테고리의 다른 글
Python에서 변수가 사전인지 확인하는 방법은 무엇입니까? (0) | 2022.11.16 |
---|---|
값이 소문자를 포함하는 행을 찾는 방법 (0) | 2022.11.16 |
Java를 사용하여 큰 텍스트 파일을 한 줄씩 읽는 방법은 무엇입니까? (0) | 2022.11.16 |
PHP의 중첩 또는 내부 클래스 (0) | 2022.11.16 |
구문 오류:strict 모드에서의 const 사용 (0) | 2022.11.16 |