Почему MySQL не позволяет мне удалить атрибут "ON update CURRENT TIMESTAMP"?
у меня есть таблица с двумя поля типа timestamp. Я просто определил их с именем и типом TIMESTAMP
, но по какой-то причине MySQL автоматически установил один из них со значением по умолчанию и атрибутом on update CURRENT_TIMESTAMP
. Я планировал не иметь значения по умолчанию в любом из полей, но одно из полей называется "date_updated", поэтому я полагаю, что могу установить упомянутый атрибут в это поле.
к сожалению, это поле "date_created", которое было установлено с , и что бы я ни делал, MySQL не позволит мне удалить его.
Я попытался отредактировать поле "date_created" и удалить атрибут. При нажатии кнопки Сохранить атрибут возвращается. Я также попытался выбрать оба поля, удалив атрибут из одного из них и установив его на другом. Это дает мне ошибку #1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
и вдруг оба столбца атрибута значения on update CURRENT_TIMESTAMP
результат:
Error
SQL query:
ALTER TABLE `pages` CHANGE `date_created` `date_created` TIMESTAMP NOT NULL ,
CHANGE `date_updated` `date_updated` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL
MySQL said:
#1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
должен ли я действительно воссоздать оба этих столбца в правильном чтобы исправить это?
Я хотел бы знать, как я мог бы решить эту проблему правильно, для дальнейшего использования.
спасибо
теперь я также попытался запустить
ALTER TABLE pages
CHANGE date_created
date_created TIMESTAMP NOT NULL
2 ответов
необходимо указать DEFAULT CURRENT_TIMESTAMP
(или DEFAULT 0
)
ALTER TABLE pages CHANGE date_created date_created TIMESTAMP NOT NULL DEFAULT 0,
CHANGE `date_updated` `date_updated` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL
начиная с версии MySQL 5.6.6, вы можете использовать explicit_defaults_for_timestamp опция в файле конфигурации, поэтому столбцы timestamp не будут иметь атрибуты "по умолчанию CURRENT_TIMESTAMP" или "ON UPDATE CURRENT_TIMESTAMP" по умолчанию. Также можно будет установить для этих столбцов значение NULL, если они не объявлены как NOT NULL.
посмотреть: http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_explicit_defaults_for_timestamp