У меня глупая проблема с SQL, которую я не могу исправить.
ALTER TABLE `новости` ДОБАВИТЬ `dateAdded` DATETIME NOT NULL ПО УМОЛЧАНИЮ CURRENT_TIMESTAMP AUTO_INCREMENT, ДОБАВИТЬ ПЕРВИЧНЫЙ КЛЮЧ (`dateAdded`)
Ошибка:
(#1067)Invalid default value for 'dateAdded'
Кто-нибудь может мне помочь?
AUTO_INCREMENT
DATETIME
?Ответы:
CURRENT_TIMESTAMP
допустимо только наTIMESTAMP
полях.DATETIME
поля должны быть оставлены либо с нулевым значением по умолчанию, либо без значения по умолчанию вообще - значения по умолчанию должны быть постоянным значением, а не результатом выражения.соответствующие документы: http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html
Вы можете обойти это, установив в таблице триггер после вставки для заполнения значения «сейчас» в любых новых записях.
источник
CURRENT_TIMESTAMP
зависит от версии и теперь разрешен дляDATETIME
столбцов, начиная с версии 5.6.См. Документацию MySQL .
источник
Также обратите внимание, что при указании
DATETIME
asDATETIME(3)
или like в MySQL 5.7.x вам также необходимо добавить такое же значение дляCURRENT_TIMESTAMP(3)
. В противном случае он будет продолжать выдавать « Недопустимое значение по умолчанию ».источник
У меня была такая же проблема, следующее исправление решило мою проблему.
Выберите Тип как "TIMESTAMP"
НЕ ЗАПУСКАЙТЕ НИЧЕГО В ПОЛЕ ДЛИНА / ЗНАЧЕНИЯ. СОХРАНИТЬ ПУСТО
Выберите CURRENT_TIMESTAMP в качестве значения по умолчанию.
Я использую MySQL версии 5.5.56
источник
У меня mysql версии 5.6.27 на моем LEMP и CURRENT_TIMESTAMP, так как значение по умолчанию работает нормально.
источник
mysql версии 5.5 устанавливает значение по умолчанию для даты и времени, поскольку CURRENT_TIMESTAMP будет сообщать об ошибке, которую вы можете обновить до версии 5.6, он устанавливает значение по умолчанию для даты и времени как CURRENT_TIMESTAMP
источник
Измените тип с datetime на timestamp, и он будет работать! У меня была такая же проблема для mysql 5.5.56-MariaDB - MariaDB Server Надеюсь, это может помочь ... извините, если он лишен
источник