Pytanie Nieprawidłowa wartość domyślna dla "dateAdded"


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

ALTER TABLE `news`
 ADD `dateAdded` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP AUTO_INCREMENT,
 DODAJ PIERWOTNY KLUCZ (`dateAdded`)

Błąd:

(#1067)Invalid default value for 'dateAdded'

Czy ktoś może mi pomóc?


76
2018-01-25 15:58


pochodzenie


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


Odpowiedzi:


CURRENT_TIMESTAMP jest dopuszczalne tylko TIMESTAMP pola. DATETIME pola muszą być pozostawione z zerową wartością domyślną lub bez 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żna obejść ten problem, ustawiając wyzwalacz po wstawianiu w tabeli, aby wprowadzić wartość "teraz" dla nowych rekordów.


121
2018-01-25 16:05



Wygląda jak z wersji mysql 5.6.5, możesz użyć CURRENT_TIMESTAMP z polami DATETIME. Widzieć dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html - Frank Schwieterman
Dzięki Frank odkrył ten problem podczas próby zaimportowania wyeksportowanego db z najnowszego xampp do wcześniejszego. - The HCD
HCD, Frank ... znalazł ten sam problem, eksportując z MariaDb 10.x do MariaDB 5.5 ... dziękuję - Aukhan
Ten błąd występuje również w mariadb 5.5. Przejdź na mariadb 10 i rozwiązany. Dzięki, Frank - Samuel Tesler


CURRENT_TIMESTAMP jest specyficzna dla wersji i jest teraz dozwolona DATETIME kolumny od wersji 5.6.

Widzieć Dokumentacja MySQL.


44
2017-09-17 10:44



Jesteś pewny ? Otrzymuję powyższy błąd w wersji 5.7.x - Ramesh Pareek


Zanotuj również podczas określania DATETIME tak jak DATETIME(3) lub jak na MySQL 5.7.x, musisz dodać tę samą wartość dla CURRENT_TIMESTAMP(3). Jeśli nie, będzie nadal rzucał "Nieprawidłowa wartość domyślna".


9
2017-07-06 08:44



Rozwiązało to problem dla mnie na 5.7.x. Moje pola datetime zostały zdefiniowane jako datetime (6), a użycie CURRENT_TIMESTAMP (6) rozwiązało problem - Brad
Jest to bardzo godne odnotowania. - Mateus Felipe


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


0
2017-10-06 14:39





mysql wersja 5.5 ustawiona domyślna wartość datetime jako CURRENT_TIMESTAMP spowoduje błąd raportu możesz zaktualizować do wersji 5.6, ustawi ona domyślną wartość datetime jako CURRENT_TIMESTAMP


0
2017-12-08 06:55





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


0
2017-11-13 16:23





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

  • Wybierz Typ jako "TIMESTAMP"

  • NIE WPISUJ WSZYSTKIEGO W DŁUGOŚCI / WARTOŚCI TERENU. ZACHOWAJ PUSTY 

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

Używam MySQL ver 5.5.56


0
2017-12-07 18:00