2015-03-12 6 views
0

У меня есть две колонки created_at и updated_at в той же таблице. Оба столбца имеют тип данных как datetime. Теперь, когда я пытаюсь изменить типы данных столбцов следующим образом -Имя столбца не принимает отметку времени по умолчанию

alter table nodestatics modify column updated_at datetime default current_timestamp; 

alter table nodestatics modify column created_at datetime default current_timestamp; 

Это показывает следующее сообщение об ошибке

Код ошибки: 1067 Недопустимое значение по умолчанию для «updated_at» (0 мс принято)

Код

Ошибка: 1067 Недопустимое значение по умолчанию для 'created_at' (0 мс принято)

Моя версия MySQL 5.5.41-0ubuntu0.14.04.1 (Ub untu)

ответ

2

трудно ссылаться documentation в комментарии:

По MySQL 5.6.5, TIMESTAMP и DATETIME столбцы могут быть автоматически initializated и обновлен до текущей даты и времени (то есть, текущая временная метка). До 5.6.5 это справедливо только для TIMESTAMP и не более одного столбца TIMESTAMP в таблице.

Либо обновление до 5.6.5. Или используйте TIMESTAMP вместо DATETIME.

+0

Еще один запрос, хотя. Можем ли мы использовать сейчас(), чтобы преодолеть это? Если да, то как это возможно? –

+1

@AnirudhRautela. , , Нет. Вы можете использовать триггер, чтобы преодолеть это. –

0

Попробуйте

alter table nodestatics modify column created_at timestamp default current_timestamp; 
1

Использование TIMESTAMP вместо DATETIME


Должно быть что-то вроде этого:

ALTER TABLE nodestatics MODIFY COLUMN updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP;

ALTER TABLE nodestatics MODIFY COLUMN created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP;


Или вы можете использовать TRIGGERS.

CREATE TRIGGER myTable_OnInsert BEFORE INSERT ON `tblMyTable` 
    FOR EACH ROW SET NEW.dateAdded = NOW(); 

Вы можете посмотреть similar topic. Счастливое кодирование!

+0

Мы можем использовать TIMESTAMP только для одного столбца в конкретной таблице. –

+0

В этом случае вы можете использовать 'Triggers'. Проверьте мою ссылку, как ее использовать. –