Подтвердить что ты не робот

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

Может кто-нибудь мне помочь?

4b9b3361

Ответ 1

CURRENT_TIMESTAMP допустим только в полях TIMESTAMP. Поля DATETIME должны быть оставлены либо с нулевым значением по умолчанию, либо без значения по умолчанию - значения по умолчанию должны быть постоянным значением, а не результатом выражения.

соответствующие документы: http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html

Вы можете обойти это, установив триггер post-insert в таблице, чтобы заполнить "сейчас" значение для любых новых записей.

Ответ 2

CURRENT_TIMESTAMP является специфичным для версии и теперь разрешен для столбцов DATETIME с версии 5.6.

См. Документы MySQL.

Ответ 3

Также обратите внимание при указании DATETIME как DATETIME(3) или как на MySQL 5.7.x, вы также должны добавить то же значение для CURRENT_TIMESTAMP(3). Если нет, он будет продолжать метать "Недопустимое значение по умолчанию".

Ответ 4

У меня есть mysql версия 5.6.27 на моих LEMP и CURRENT_TIMESTAMP, поскольку значение по умолчанию отлично работает.

Ответ 5

mysql version 5.5 устанавливает значение по умолчанию datetime, так как CURRENT_TIMESTAMP будет представлять ошибку отчета вы можете обновить до версии 5.6, установить значение по умолчанию datetime как CURRENT_TIMESTAMP

Ответ 6

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

Ответ 7

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

  • Выберите тип как "TIMESTAMP"

  • НЕ ВХОДЬ В НЕСКОЛЬКО В ПОЛНОМ ДЛИНАХ/ЦЕННОСТИ. ХРАНИТЕ ЧЕЛОВЕК

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

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