Недопустимое значение по умолчанию для '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'
Может кто-нибудь мне помочь?
Ответы
Ответ 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