Valor predeterminado no válido para el campo de marca de tiempo 'create_date'
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í?
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.
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';