Use CURRENT_TIMESTAMP como predeterminado en MySQL

Habdul Hazeez 15 febrero 2024
  1. Reproduzca el error al usar CURRENT_TIMESTAMP como DEFAULT en MySQL
  2. Reordenar las columnas de la tabla para usar CURRENT_TIMESTAMP como DEFAULT en MySQL
  3. Use DEFAULT 0 para usar CURRENT_TIMESTAMP como DEFAULT en MySQL
  4. Use un valor de tiempo para usar CURRENT_TIMESTAMP como DEFAULT en MySQL
Use CURRENT_TIMESTAMP como predeterminado en 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 a 5.6.5. Obtendrá esto como parte de XAMPP 1.8.0 u otros medios.
  • Abra MySQL en XAMPP, inicie sesión con mysql -u root -p. Notarás que la versión de MySQL es 5.5.2a, por lo que es menor que 5.6.5.
  • Cree una base de datos llamada just_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:

MySQLError 1293 en MySQL 5.5.25a

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:

Tabla de base de datos creada con éxito después de reordenar las columnas de la tabla

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:

Usando DEFAULT 0 en una columna TIMESTAMP en MySQL 5.5.25a

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:

Usando un valor de tiempo para una columna TIMESTAMP en MySQL 5.5.25a

Habdul Hazeez avatar Habdul Hazeez avatar

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

Artículo relacionado - MySQL Timestamp