Nieprawidłowa wartość domyślna dla „dateAdded”


91

Mam głupi problem z SQL, którego nie mogę naprawić.

ALTER TABELA `nowości` 
 DODAJ „dateAdded” DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP AUTO_INCREMENT,
 DODAJ KLUCZ PODSTAWOWY (`dateAdded`)

Błąd:

(#1067)Invalid default value for 'dateAdded'

Czy ktoś może mi pomóc?


9
To może być głupie pytanie, ale dlaczego AUTO_INCREMENT DATETIME?
jave.web

Odpowiedzi:


138

CURRENT_TIMESTAMPjest dopuszczalne tylko na TIMESTAMPpolach. DATETIMEw polach należy pozostawić pustą wartość domyślną lub w ogóle brak wartości domyślnej - wartości domyślne muszą być wartością stałą, a nie wynikiem wyrażenia.

odpowiednie dokumenty: http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html

Możesz obejść ten problem, ustawiając wyzwalacz post-insert w tabeli, aby wypełnić wartość „now” w każdym nowym rekordzie.


70
Wygląda na to, że od mysql 5.6.5 możesz używać CURRENT_TIMESTAMP z polami DATETIME. Zobacz dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html
Frank Schwieterman

2
Dzięki Frank, znalazłem ten problem podczas próby zaimportowania wyeksportowanej bazy danych z najnowszego xampp do wcześniejszej.
HCD

HCD, Frank ... znalazł ten sam problem podczas eksportowania z MariaDb 10.x do MariaDB 5.5 ... dzięki
Aukhan

1
Ten błąd występuje również w Mariadbie 5.5. Uaktualnij do mariadb 10 i jego rozwiązanie. Dzięki Frank
Samuel Tesler


17

Zwróć także uwagę, gdy określasz DATETIMEjako DATETIME(3)lub podobne w MySQL 5.7.x, musisz również dodać tę samą wartość dla CURRENT_TIMESTAMP(3). Jeśli nie, będzie nadal wyświetlał „ Nieprawidłowa wartość domyślna ”.


1
To rozwiązało problem dla mnie w wersji 5.7.x. Moje pola datetime zostały zdefiniowane jako datetime (6) i użycie CURRENT_TIMESTAMP (6) rozwiązało problem
Brad

1
Jest to godne uwagi.
Mateus Felipe

1

Miałem ten sam problem, po naprawie rozwiązałem mój problem.

  • Wybierz Typ jako „TIMESTAMP”

  • NIE WPISUJ NICZEGO W POLU DŁUGOŚCI / WARTOŚCI. ZACHOWAJ PUSTE

  • Wybierz CURRENT_TIMESTAMP jako wartość domyślną.

Używam MySQL w wersji 5.5.56


0

Mam mysql w wersji 5.6.27 na moim LEMP i CURRENT_TIMESTAMP, ponieważ wartość domyślna działa dobrze.


0

mysql w wersji 5.5 ustaw domyślną wartość datetime na CURRENT_TIMESTAMP będzie zgłosić błąd, który można zaktualizować do wersji 5.6, ustawia domyślną wartość daty i godziny jako CURRENT_TIMESTAMP


0

Zmień typ z datetime na timestamp i zadziała! Miałem ten sam problem z mysql 5.5.56-MariaDB - Serwer MariaDB Mam nadzieję, że może pomóc ... przepraszam, jeśli pozbawiony


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.