Valor predeterminado no válido para el campo de marca de tiempo 'create_date'

Resuelto robert asked hace 12 años • 20 respuestas

Tengo la siguiente declaración de creación de SQL

mysql> CREATE  TABLE IF NOT EXISTS `erp`.`je_menus` (
    ->   `id` INT(11) NOT NULL AUTO_INCREMENT ,
    ->   `name` VARCHAR(100) NOT NULL ,
    ->   `description` VARCHAR(255) NOT NULL ,
    ->   `live_start_date` DATETIME NULL DEFAULT NULL ,
    ->   `live_end_date` DATETIME NULL DEFAULT NULL , 
    ->   `notes` VARCHAR(255) NULL ,
    ->   `create_date` TIMESTAMP NOT NULL DEFAULT  '0000-00-00 00:00:00',
    ->   `created_by` INT(11) NOT NULL ,
    ->   `update_date` TIMESTAMP NOT NULL DEFAULT  CURRENT_TIMESTAMP  ,
    ->   `updated_by` INT(11) NOT NULL , 
    ->   `status` VARCHAR(45) NOT NULL ,
    ->   PRIMARY KEY (`id`) ) 
    -> ENGINE = InnoDB;

dando el siguiente error

ERROR 1067 (42000): Invalid default value for 'create_date'

¿Cuál es el error aquí?

robert avatar Feb 08 '12 18:02 robert
Aceptado

Esto se debe al modo SQL del servidor: NO_ZERO_DATE .

De la referencia: NO_ZERO_DATE- En modo estricto, no permite '0000-00-00'como fecha válida. Aún puedes insertar cero fechas con la opción IGNORAR . Cuando no está en modo estricto, se acepta la fecha pero se genera una advertencia.

Devart avatar Feb 08 '2012 11:02 Devart

Si generó el script desde el banco de trabajo MySQL.

Se genera la siguiente línea

SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';

Elimine TRADITIONAL de SQL_MODE y luego el script debería funcionar bien

De lo contrario, puede configurar SQL_MODE como Permitir fechas no válidas

SET SQL_MODE='ALLOW_INVALID_DATES';
Pankaj Shrestha avatar Apr 07 '2015 23:04 Pankaj Shrestha