Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL Nieprawidłowa wartość domyślna znacznika czasu, gdy nie podano wartości domyślnej.

Chociaż @jsnplank ma rację, że znaczniki czasu są traktowane inaczej i powinieneś rozważyć użycie typu danych data/godzina dla tych 2 konkretnych kolumn, jednak nie wyjaśnia komunikatu o błędzie.

Komunikat o błędzie jest najprawdopodobniej wynikiem kombinacji sposobu, w jaki mysql traktuje pola znaczników czasu, gdy nie podano wartości domyślnej, oraz ustawień trybu sql.

  1. Zdefiniuj obie kolumny sygnatury czasowej jako nie null, bez określonego zestawu wartości domyślnych. Oznacza to, że domyślną wartością pierwszej kolumny sygnatury czasowej będzie current_timestamp() i będzie również aktualizowana do current_timestamp() za każdym razem, gdy rekord się zmieni. Dlatego pierwsze pole znacznika czasu nie generuje komunikatu o błędzie, bez względu na to, który z nich jest pierwszym.

    Jednak domyślną wartością drugiej kolumny sygnatury czasowej o wartości niezerowej będzie „0000-00-00 00:00:00”, jeśli nie zdefiniujesz jawnie wartości domyślnej.

    Zobacz ten post na blogu, aby uzyskać więcej informacji .

  2. Prawdopodobnie no_zero_date Tryb sql jest również włączony na serwerze bezpośrednio lub jako część trybu ścisłego sql. Ten tryb sql generuje błąd, jeśli chcesz ustawić „0000-00-00 00:00:00” jako wartość domyślną lub chcesz wstawić tę wartość do dowolnego pola daty.

Możesz więc użyć typu danych datownika w swojej tabeli, ale ustaw dla drugiego typu wartość null lub podaj 0 lub dowolną prawidłową datę (np. Epokę) jako jawną wartość domyślną.

Ponieważ zaznaczasz daty rozpoczęcia i zakończenia za pomocą tych pól, dobrym pomysłem może być podanie daty i godziny zamiast znacznika czasu jako typu danych.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Szybkość replikacji MySQL

  2. Instrukcja tablicy PDO IN() ORAZ symbol zastępczy

  3. MySQL BLOB a plik do przechowywania małych obrazów PNG?

  4. Nie można połączyć się z bazą danych mysql?

  5. Ostrzeżenie:mysqli_connect():(HY000/2002):Brak takiego pliku lub katalogu