Use CURRENT_TIMESTAMP como predeterminado en MySQL
- 
          
            Reproduzca el error al usar CURRENT_TIMESTAMPcomoDEFAULTen MySQL
- 
          
            Reordenar las columnas de la tabla para usar CURRENT_TIMESTAMPcomoDEFAULTen MySQL
- 
          
            Use DEFAULT 0para usarCURRENT_TIMESTAMPcomoDEFAULTen MySQL
- 
          
            Use un valor de tiempo para usar CURRENT_TIMESTAMPcomoDEFAULTen MySQL
 
Este artículo te enseña cómo usar CURRENT_TIMESTAMP como DEFAULT en las versiones de MySQL anteriores a 5.6.5. Como resultado, puede evitar el error 1293 de MySQL.
Nuestros métodos incluyen reordenar las columnas de la tabla y usar DEFAULT 0 y un valor de tiempo.
Reproduzca el error al usar CURRENT_TIMESTAMP como DEFAULT en MySQL
Reproduzcamos el error antes de mostrarte cómo usar CURRENT_TIMESTAMP como DEFAULT. Este es el error que obtendrá cuando intente usar CURRENT_TIMESTAMP como DEFAULT.
Para seguir, haga lo siguiente:
- 
Descarga la versión de MySQL inferior a5.6.5. Obtendrá esto como parte de XAMPP 1.8.0 u otros medios.
- 
Abra MySQL en XAMPP, inicie sesión conmysql -u root -p. Notarás que la versión de MySQL es5.5.2a, por lo que es menor que5.6.5.
- 
Cree una base de datos llamadajust_a_test_db.
Ahora, use el siguiente SQL para crear una tabla site_users en la base de datos:
CREATE TABLE site_users (
    user_id INT NOT NULL AUTO_INCREMENT,
    username VARCHAR(255) NOT NULL UNIQUE,
    user_firstname VARCHAR(255) NOT NULL,
    user_surname VARCHAR(255) NOT NULL,
    user_email_address VARCHAR(255) NOT NULL UNIQUE,
    user_password CHAR(40) NOT NULL,
    is_active BOOL NOT NULL DEFAULT FALSE,
    is_validated BOOL NOT NULL DEFAULT FALSE,
    date_validated TIMESTAMP,
    date_registered TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (user_id)
) Engine=InnoDB;
Obtendrá un error como se ve en la siguiente imagen:

Reordenar las columnas de la tabla para usar CURRENT_TIMESTAMP como DEFAULT en MySQL
Puede usar CURRENT_TIMESTAMP como DEFAULT si reordena las columnas de la tabla en su consulta SQL. La columna con un CURRENT_TIMESTAMP como DEFAULT debe aparecer primero; deben seguir otras columnas con valores TIMESTAMP.
En el siguiente SQL, hemos reordenado el SQL y MySQL crea la tabla:
CREATE TABLE site_users (
    user_id INT NOT NULL AUTO_INCREMENT,
    username VARCHAR(255) NOT NULL UNIQUE,
    user_firstname VARCHAR(255) NOT NULL,
    user_surname VARCHAR(255) NOT NULL,
    user_email_address VARCHAR(255) NOT NULL UNIQUE,
    user_password CHAR(40) NOT NULL,
    is_active BOOL NOT NULL DEFAULT FALSE,
    is_validated BOOL NOT NULL DEFAULT FALSE,
    date_registered TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    date_validated TIMESTAMP,
    PRIMARY KEY (user_id)
) Engine=InnoDB;
Salida en la consola MySQL:

Use DEFAULT 0 para usar CURRENT_TIMESTAMP como DEFAULT en MySQL
Usar DEFAULT 0 es otra opción que te permitirá usar CURRENT_TIMESTAMP como DEFAULT. Lo aplicará a las columnas TIMESTAMP que no tienen un valor predeterminado.
De nuestro SQL, esta es la columna date_validated. El siguiente SQL le muestra cómo hacer esto:
CREATE TABLE site_users_2 (
    user_id INT NOT NULL AUTO_INCREMENT,
    username VARCHAR(255) NOT NULL UNIQUE,
    user_firstname VARCHAR(255) NOT NULL,
    user_surname VARCHAR(255) NOT NULL,
    user_email_address VARCHAR(255) NOT NULL UNIQUE,
    user_password CHAR(40) NOT NULL,
    is_active BOOL NOT NULL DEFAULT FALSE,
    is_validated BOOL NOT NULL DEFAULT FALSE,
    date_validated TIMESTAMP NOT NULL DEFAULT 0,
    date_registered TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (user_id)
) Engine=InnoDB;
Salida en la consola MySQL:

Use un valor de tiempo para usar CURRENT_TIMESTAMP como DEFAULT en MySQL
Si el valor predeterminado de TIMESTAMP es una hora, puede usar CURRENT_TIMESTAMP como DEFAULT en otras columnas. Este valor de tiempo es 0000-00-00 00:00:00, y lo hemos usado en la columna date_validated.
El siguiente SQL muestra esto en acción:
CREATE TABLE site_users_3 (
    user_id INT NOT NULL AUTO_INCREMENT,
    username VARCHAR(255) NOT NULL UNIQUE,
    user_firstname VARCHAR(255) NOT NULL,
    user_surname VARCHAR(255) NOT NULL,
    user_email_address VARCHAR(255) NOT NULL UNIQUE,
    user_password CHAR(40) NOT NULL,
    is_active BOOL NOT NULL DEFAULT FALSE,
    is_validated BOOL NOT NULL DEFAULT FALSE,
    date_validated TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
    date_registered TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (user_id)
) Engine=InnoDB;
Salida en la consola MySQL:

Habdul Hazeez is a technical writer with amazing research skills. He can connect the dots, and make sense of data that are scattered across different media.
LinkedIn