Mam tabelę jak pokazano poniżej. W celu obejścia Uchybienia teraz kolumny ograniczenie MySQL użyłem końcówki jak pokazano hereMySQL dwukolorowa sygnatura czasowa domyślnie TERAZ BŁĄD 1067
CREATE TABLE IF NOT EXISTS mytable (
id INT NOT NULL AUTO_INCREMENT ,
create_date TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00' ,
update_date TIMESTAMP NULL DEFAULT NOW() ON UPDATE NOW() ,
PRIMARY KEY (`parti_id`))
ENGINE = InnoDB;
Moja sql_mode nie obejmuje NO_ZERO_DATE
jak wskazał here mój wynik:
mysql> SELECT @@sql_mode;
+------------+
| @@sql_mode |
+------------+
| |
+------------+
1 row in set (0.00 sec)
To wciąż daje błąd przedstawiony poniżej:
ERROR 1067 (42000) at line xx in file: '/myschema.sql': Invalid default value for 'create_date'
Używam MySQL 5.1.37 na Ubuntu
Jak mogę to naprawić? Dzięki.
To nie jest błąd, to cecha: „Dla jednej kolumny TIMESTAMP w tabeli, można przypisać aktualny znacznik czasu jako wartości domyślne i wartości automatycznej aktualizacji Możliwe jest, że bieżący datownik będzie domyślną wartością do zainicjowania kolumny, dla wartości automatycznej aktualizacji lub obu. Nie jest możliwe, aby bieżący datownik był wartością domyślną dla jednej kolumny i wartością automatycznej aktualizacji dla innej kolumny. " –
Debata o tym, czy jest to" błąd ", czy nie, pozostaje, ponieważ jest to bardzo denerwujące. Dlaczego nie mogę mieć dwóch kolumn sygnatury czasowej z domyślną wartością teraz() z automatyczną aktualizacją drugiej kolumny? Odpowiedź brzmi, że MySQL tego nie robi. Tak naprawdę nie nazywam tej funkcji. –
Randy dzięki za odpowiedź. Znam link, który podałeś. Po prostu szukam obejścia. Jednak wydaje się, że wszystkie sztuczki pokazane w Internecie po prostu nie działają. –