DATETIME Valor predeterminado 0 MYSQL 5.5.25

Estoy tratando de crear estas tablas:

CREATE  TABLE IF NOT EXISTS `qa_discountcoupons` (
  `discount_code` INT NOT NULL AUTO_INCREMENT ,
  `status_code` INT NOT NULL ,
  `discount_date` DATETIME NOT NULL DEFAULT 0 ,
  PRIMARY KEY (`discount_code`) ,
  INDEX `discounts_to_status` (`status_code` ASC) ,
  CONSTRAINT `discounts_to_status`
    FOREIGN KEY (`status_code` )
    REFERENCES `qa_status` (`status_code` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

Pero obtengo este error:

Error Code: 1067. Invalid default value for 'discount_date'

preguntado el 12 de junio de 12 a las 22:06

1 Respuestas

Puedes usar:

CREATE  TABLE IF NOT EXISTS `qa_discountcoupons` (
 `discount_code` INT NOT NULL AUTO_INCREMENT ,
 `status_code` INT NOT NULL ,
 `discount_date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ,
 PRIMARY KEY (`discount_code`) ,
 INDEX `discounts_to_status` (`status_code` ASC) ,
 CONSTRAINT `discounts_to_status`
 FOREIGN KEY (`status_code` )
 REFERENCES `qa_status` (`status_code` )
 ON DELETE NO ACTION
 ON UPDATE NO ACTION)
ENGINE = InnoDB;

desde MySQL 5.6.5 y superior.

Sugiero también revisar el hilo en ¿Cómo se establece un valor predeterminado para una columna de fecha y hora de MySQL? - que tiene muchos comentarios sobre esto.

contestado el 23 de mayo de 17 a las 13:05

hay alguna forma de ponerlo a 0? - Juan Nuñez

Bueno, 0 no es realmente una fecha, pero puede elegir una fecha arbitraria y usarla como su "punto nulo", como el 1 de enero de 1970 o algo así. Sin embargo, un buen diseño usaría NULL para 0. - kerbocat

Si su modo SQL no incluye NO_ZERO_DATE (dev.mysql.com/doc/refman/5.5/en/…), tú podría do discount_date DATETIME NOT NULL DEFAULT '0000-00-00' pero como aconseja Kerbocat, NULL es definitivamente preferible. - Semilla aleatoria

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.