sql >> Database teknologi >  >> RDS >> Mysql

Hvordan kan jeg indstille standardværdien for et felt som '0000-00-00 00:00:00'?

Årsag til fejlen:SQL-tilstanden

Du kan indstille standardværdien for en DATE , DATETIME eller TIMESTAMP feltet til den specielle "nul" værdi af '0000-00-00' som dummy-dato, hvis sql-tilstanden tillader det. For MySQL-versioner lavere end 5.7.4 er dette styret af NO_ZERO_DATE-tilstanden, se dette uddrag af dokumentation :

Derudover skal streng tilstand være aktiveret for at ikke tillade "nul" værdier:

Fra MySQL 5.7.4 dette afhænger kun af den strenge tilstand:

Tjek version og SQL-tilstand

Så du bør tjekke din MySQL-version og SQL-tilstand af din MySQL-server med

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

Aktiver INSERT

Du kan indstille sql_mode for din session med SET sql_mode = '<desired mode>'

SET sql_mode = 'STRICT_TRANS_TABLES';   

Gyldigt interval for DATETIME

Det understøttede interval for DATETIME er

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

så den minimale gyldige DATETIME-værdi er '1000-01-01 00:00:00'.
Jeg vil dog ikke anbefale at bruge denne værdi.

Yderligere bemærkning

Siden MySQL 5.6.5 alle TIMESTAMP og DATETIME kolonner kan have den magiske adfærd (initialisering og/eller opdatering), ikke kun TIMESTAMP og kun én kolonne højst, se Automatisk initialisering og opdatering for TIMESTAMP og DATETIME :

Du kan ændre din CREATE TABLE-sætning i tilfælde af MySQL 5.6.5 eller nyere til:

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. mysql- Hvordan ansøger man tilskud til kolonne?

  2. PHP MYSQL multidimensional array

  3. Hvilken kolonnetype skal bruges til at gemme serialiserede data i en mysql db?

  4. Sådan rettes en Lås Vent Timeout Overskredet fejl i MySQL