Use CURRENT_TIMESTAMP como predeterminado en MySQL
-
Reproduzca el error al usar
CURRENT_TIMESTAMP
comoDEFAULT
en MySQL -
Reordenar las columnas de la tabla para usar
CURRENT_TIMESTAMP
comoDEFAULT
en MySQL -
Use
DEFAULT 0
para usarCURRENT_TIMESTAMP
comoDEFAULT
en MySQL -
Use un valor de tiempo para usar
CURRENT_TIMESTAMP
comoDEFAULT
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 es5.5.2a
, por lo que es menor que5.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:
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