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?
AUTO_INCREMENT
DATETIME
?Odpowiedzi:
CURRENT_TIMESTAMP
jest dopuszczalne tylko naTIMESTAMP
polach.DATETIME
w 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.
źródło
CURRENT_TIMESTAMP
jest specyficzna dla wersji i jest teraz dozwolona dlaDATETIME
kolumn od wersji 5.6.Zobacz dokumentację MySQL .
źródło
Zwróć także uwagę, gdy określasz
DATETIME
jakoDATETIME(3)
lub podobne w MySQL 5.7.x, musisz również dodać tę samą wartość dlaCURRENT_TIMESTAMP(3)
. Jeśli nie, będzie nadal wyświetlał „ Nieprawidłowa wartość domyślna ”.źródło
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
źródło
Mam mysql w wersji 5.6.27 na moim LEMP i CURRENT_TIMESTAMP, ponieważ wartość domyślna działa dobrze.
źródło
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
źródło
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
źródło
Rozwiązałem swoje, zmieniając się
DATE
naDATETIME
źródło