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

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

измените тип с datetime на timestamp, и он будет работать! У меня была такая же проблема для mysql 5.5.56 - MariaDB-MariaDB Server Надеюсь, это поможет... извините, если устарели

У меня была такая же проблема, следующее исправление решило мою проблему.

  • выберите тип как "отметка времени"

  • НЕ ВВОДИТЕ НИЧЕГО В ПОЛЕ ДЛИНА / ЗНАЧЕНИЯ. ДЕРЖИТЕ ЕГО ПУСТЫМ

  • выберите CURRENT_TIMESTAMP в качестве значения по умолчанию.

Я использую MySQL ver 5.5.56