MySQL Alter table вызывает ошибку: неверное использование значения NULL
Моя существующая таблица:
+-----------------+---------------+------+-----+---------+-------------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+---------------+------+-----+---------+-------------------+
| creation_date | timestamp | YES | | NULL |
Я хотел изменить таблицу следующим образом:
ALTER TABLE enterprise MODIFY creation_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
Но я получил эту ошибку:
ОШИБКА 1138 (22004) в строке 7: Недопустимое использование значения NULL
Проблема выглядит как изменение Nullable, которое было YES, чтобы NOT NULL. Нужно ли отбрасывать столбец и добавлять потом?
Ответы
Ответ 1
Похоже, что есть несколько строк с NULL значением. Обновите все значения null до даты по умолчанию в этом столбце, а затем попробуйте сделать alter.
Попробуйте это
--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;
Ответ 2
Вы не можете использовать этот запрос, пока не получите нулевые значения в create_date столбец.
Обновите столбец create_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;