MySQL по умолчанию datetime через phpmyadmin

В существующей базе данных яВе возрастной столбец (INT). Теперь мне нужно установить его как dob (DATETIME).

Я пытаюсь сделать это через PHPMyAdmin, давая CURRENT_TIMESTAMP в качестве значения по умолчанию, как определеноответ с 138 голосов, Однако PHPMyAdmin жалуется#1067 - invalid default value for 'dob' как на скриншоте:

Может кто-нибудь подсказать, почему яполучаю эту ошибку и как это исправить?

 Mithun Sreedharan25 окт. 2012 г., 10:00
 Mithun Sreedharan25 окт. 2012 г., 09:58
Хотите знать, как дата рождения может иметь текущее время в качестве значения по умолчанию?
 Kapil Sharma25 окт. 2012 г., 10:16
@Mithun. Просто временное значение. позже изменится с другими значениями.

Ответы на вопрос(5)

Решение Вопроса

Вы можете'установить CURRENT_TIMESTAMP в качестве значения по умолчанию с DATETIME.

Но вы можете сделать это с TIMESTAMP.

Увидеть разницуВот.

Слова изэтот блог

Предложение значения DEFAULT в спецификации типа данных указывает значение по умолчанию для столбца. За одним исключением, значение по умолчанию должно быть константой; это не может быть функция или выражение.

Это означает, например, что вы не можете установить по умолчанию для столбца даты значение функции, такой как NOW () или CURRENT_DATE.

Исключением является то, что вы можете указать CURRENT_TIMESTAMP в качестве значения по умолчанию для столбца TIMESTAMP.

 Kapil Sharma25 окт. 2012 г., 10:26
Благодарю. Я использовал ноль в качестве временного значения. Изначально я пытался пройтиnot null и использование текущей даты в качестве значения по умолчанию, но, кажется, это невозможно. Временно допустил ноль, и это сработало.

Я неЯ думаю, что вы можете достичь этого с датой MySQL. Вы должны использовать метку времени или попробовать этот подход ..

CREATE TRIGGER table_OnInsert BEFORE INSERT ON `DB`.`table`
FOR EACH ROW SET NEW.dateColumn = IFNULL(NEW.dateColumn, NOW());

Лучший способ для DateTime - использовать триггер:

/************ ROLE ************/
drop table if exists `role`;
create table `role` (
    `id_role` bigint(20) unsigned not null auto_increment,
    `date_created` datetime,
    `date_deleted` datetime,
    `name` varchar(35) not null,
    `description` text,
    primary key (`id_role`)
) comment='';

drop trigger if exists `role_date_created`;
create trigger `role_date_created` before insert
    on `role`
    for each row 
    set new.`date_created` = now();

Установите тип поля как TIMESTAMP.

Вы'получаю эту ошибку, потому что значение по умолчаниюcurrent_time недопустимо для типаDATETIME, Тот'Что это говорит, и это "что происходит?

Единственное поле, которое вы можете использоватьcurrent_time это метка времени.

Ваш ответ на вопрос