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

Jak ustawić domyślną wartość pola na „0000-00-00 00:00:00”?

Przyczyna błędu:tryb SQL

Możesz ustawić domyślną wartość DATE , DATETIME lub TIMESTAMP pole na specjalną „zero” wartość „0000-00-00” jako fikcyjną datę, jeśli pozwala na to tryb sql. W przypadku wersji MySQL starszych niż 5.7.4 jest to regulowane przez tryb NO_ZERO_DATE, zobacz ten fragment dokumentacja :

Dodatkowo musi być włączony tryb ścisły, aby nie zezwalać na wartości „zero”:

Od MySQL 5.7.4 zależy to tylko od trybu ścisłego:

Sprawdź wersję i tryb SQL

Powinieneś więc sprawdzić swoją wersję MySQL i tryb SQL serwera MySQL za pomocą

SELECT version();
SELECT @@GLOBAL.sql_mode global, @@SESSION.sql_mode session

Włącz INSERT

Możesz ustawić tryb sql_mode dla swojej sesji za pomocą SET sql_mode = '<desired mode>'

SET sql_mode = 'STRICT_TRANS_TABLES';   

Prawidłowy zakres dla DATETIME

Obsługiwany zakres dla DATETIME jest

[1000-01-01 00:00:00] to ['9999-12-31 23:59:59'], 

więc minimalna prawidłowa wartość DATETIME to „1000-01-01 00:00:00”.
Nie polecam jednak używania tej wartości.

Dodatkowa uwaga

Od MySQL 5.6.5 wszystkie TIMESTAMP i DATETIME kolumny mogą mieć magiczne zachowanie (inicjowanie i/lub aktualizowanie), nie tylko TIMESTAMP i najwyżej jedną kolumnę, zobacz Automatyczna inicjalizacja i aktualizacja TIMESTAMP i DATETIME :

Możesz zmienić instrukcję CREATE TABLE w przypadku MySQL 5.6.5 lub nowszego na:

CREATE TABLE IF NOT EXISTS `article` (
  `article_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `url` VARCHAR(255) NOT NULL,
  `title` VARCHAR(255) NOT NULL,
  `date_from` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT 'Set the article as new or featured from a datetime.',
  `date_to` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT 'Set the article as new or featured to a datetime.',
  `backdated_on` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT 'The manual datetime that is modified or input by the user.',
  `created_on` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'The permanent datetime when the article is created.',
  `updated_on` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'The datetime when the article is updated on.',
  PRIMARY KEY (`article_id`, `parent_id`, `template_id`),
  UNIQUE INDEX `url_UNIQUE` (`url` ASC))
ENGINE = MyISAM
AUTO_INCREMENT = 66
COMMENT = 'Entity that holds the article with one-to-one properties.';


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak usunąć rekord MySQL po określonym czasie?

  2. MySQL wyłącza i włącza klawisze

  3. Wybór zwycięzców kuponów na loterię PHP

  4. MySQL — użycie COUNT(*) w klauzuli WHERE

  5. Błąd MYSQLi:użytkownik ma już więcej niż „max_user_connections” aktywnych połączeń