Saltar al contenido

No se puede establecer la fecha predeterminada en CURRENT_TIMESTAMP en MySQL 5.5

Solución:

Del manual de MySQL 5.5:

No puede establecer el valor predeterminado de una columna de fecha para que sea el valor de una función como NOW () o CURRENT_DATE. La excepción es que puede especificar CURRENT_TIMESTAMP como predeterminado para una columna TIMESTAMP.

Por lo tanto, lo que desea lograr funcionará en MySQL 5.5 si agrega un TIMESTAMP columna en lugar de una DATE columna.

Los cambios en 5.6.x que permiten la funcionalidad están documentados aquí, y citaré el resumen relevante para que esté completo:

A partir de MySQL 5.6.5, las columnas TIMESTAMP y DATETIME se pueden inicializar y actualizar automáticamente a la fecha y hora actuales (es decir, la marca de tiempo actual). Antes de 5.6.5, esto es cierto solo para TIMESTAMP, y como máximo para una columna TIMESTAMP por tabla.

Comprueba esta respuesta.

Tus opciones son:

  • Actualice a MySQL 5.6.5
  • Cambie el tipo de columna a TIMESTAMP, como en:

    ALTER TABLE `downloads` ADD `date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ;
    
  • Cree un DISPARADOR QUE actualice la columna automáticamente:

    ALTER TABLE `downloads` ADD `date` DATETIME NULL; -- date must allow
                                                      -- NULLs or default
                                                      -- to a special value
    DROP TRIGGER IF EXISTS downloads_BI;
    DELIMITER //
    CREATE TRIGGER downloads_BI
    BEFORE INSERT ON downloads FOR EACH ROW
    BEGIN
        IF (NEW.date IS NULL) THEN -- change the isnull check for the default used
            SET NEW.date = now();
        END IF;
    END//
    DELIMITER ;
    

    Es posible que también desee crear un valor de actualización, si debe actualizarse automáticamente en la actualización o si desea evitar valores nulos.

    mysql> INSERT INTO downloads (i) VALUES (1); -- I do not set date
    Query OK, 1 row affected (0.00 sec)
    
    mysql> SELECT * FROM downloads;
    +------+---------------------+
    | i    | date                |
    +------+---------------------+
    |    1 | 2016-03-22 09:27:52 |
    +------+---------------------+
    1 row in set (0.00 sec)
    
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *