Недопустимое значение по умолчанию для '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