source

MySQL Alter 테이블에서 오류가 발생했습니다.잘못된 NULL 값 사용

factcode 2022. 11. 16. 21:25
반응형

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

반응형