Недопустимое значение по умолчанию для 'dateAdded'
у меня глупая проблема с SQL, которую я не могу исправить.
ALTER TABLE `news` ADD `dateAdded` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP AUTO_INCREMENT , ADD PRIMARY KEY ( `dateAdded` )
ошибка:
(#1067)Invalid default value for 'dateAdded'
может кто-нибудь помочь мне?
7 ответов:
CURRENT_TIMESTAMPдопускается только наTIMESTAMPполя.DATETIMEполя должны быть оставлены либо с нулевым значением по умолчанию, либо без значения по умолчанию вообще - значения по умолчанию должны быть постоянным значением, а не результатом выражения.соответствующие документы: http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html
вы можете обойти это, установив триггер post-insert в таблице, чтобы заполнить значение "сейчас" для любых новых записей.
CURRENT_TIMESTAMPверсия специфична и теперь разрешена дляDATETIMEстолбцы с версии 5.6.посмотреть MySQL docs.
также обратите внимание при указании
DATETIMEКакDATETIME(3)или как на MySQL 5.7.x, вы также должны добавить то же значение дляCURRENT_TIMESTAMP(3). Если нет, то он будет продолжать бросать'недопустимое значение по умолчанию'.
У меня есть версия mysql 5.6.27 на моем LEMP и CURRENT_TIMESTAMP как значение по умолчанию работает нормально.
mysql версии 5.5 установить значение по умолчанию datetime как CURRENT_TIMESTAMP будет сообщение об ошибке вы можете обновить до версии 5.6, он установил значение по умолчанию datetime как CURRENT_TIMESTAMP