sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo puedo establecer el valor predeterminado de un campo como '0000-00-00 00:00:00'?

Causa del error:el modo SQL

Puede establecer el valor predeterminado de un DATE , DATETIME o TIMESTAMP campo al valor especial "cero" de '0000-00-00' como fecha ficticia si el modo sql lo permite. Para versiones de MySQL anteriores a 5.7.4, esto se rige por el modo NO_ZERO_DATE, consulte este extracto de documentación :

Además, se debe habilitar el modo estricto para no permitir valores "cero":

A partir de MySQL 5.7.4 esto depende solo del modo estricto:

Verificar versión y modo SQL

Por lo tanto, debe verificar su versión de MySQL y el modo SQL de su servidor MySQL con

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

Habilitar INSERTAR

Puede establecer el sql_mode para su sesión con SET sql_mode = '<desired mode>'

SET sql_mode = 'STRICT_TRANS_TABLES';   

Rango válido para DATETIME

El rango admitido para DATETIME es

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

por lo que el valor mínimo válido de DATETIME es '1000-01-01 00:00:00'.
Sin embargo, no recomendaría usar este valor.

Nota adicional

Desde MySQL 5.6.5 todo TIMESTAMP y DATETIME las columnas pueden tener el comportamiento mágico (inicialización y/o actualización), no solo TIMESTAMP y solo una columna como máximo, consulte Inicialización y actualización automáticas para TIMESTAMP y DATETIME :

Puede cambiar su instrucción CREATE TABLE en el caso de MySQL 5.6.5 o posterior a:

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.';