sql >> Databasteknik >  >> RDS >> Mysql

Hur kan jag ställa in standardvärdet för ett fält som '0000-00-00 00:00:00'?

Orsak till felet:SQL-läget

Du kan ställa in standardvärdet för en DATE , DATETIME eller TIMESTAMP fältet till det speciella "noll"-värdet på '0000-00-00' som dummydatum om sql-läget tillåter det. För MySQL-versioner lägre än 5.7.4 styrs detta av NO_ZERO_DATE-läget, se detta utdrag av dokumentation :

Dessutom måste strikt läge vara aktiverat för att inte tillåta "noll"-värden:

Från och med MySQL 5.7.4 detta beror bara på det strikta läget:

Kontrollera version och SQL-läge

Så du bör kontrollera din MySQL-version och SQL-läget på din MySQL-server med

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

Aktivera INSERT

Du kan ställa in sql_mode för din session med SET sql_mode = '<desired mode>'

SET sql_mode = 'STRICT_TRANS_TABLES';   

Giltigt intervall för DATETIME

Intervallet som stöds för DATETIME är

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

så det minsta giltiga DATETIME-värdet är '1000-01-01 00:00:00'.
Jag skulle dock inte rekommendera att använda detta värde.

Ytterligare anmärkning

Sedan MySQL 5.6.5 alla TIMESTAMP och DATETIME kolumner kan ha det magiska beteendet (initiering och/eller uppdatering), inte bara TIMESTAMP och endast en kolumn högst, se Automatisk initiering och uppdatering för TIMESTAMP och DATETIME :

Du kan ändra din CREATE TABLE-sats i fallet med MySQL 5.6.5 eller senare till:

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. Docker - Hur kan man köra kommandot psql i postgres-behållaren?

  2. ExecuteNonQuery:Anslutningsegenskapen har inte initierats.

  3. Få översta raden i varje grupp

  4. Är mysql_real_escape_string() nödvändigt när du använder förberedda satser?