Utiliser CURRENT_TIMESTAMP par défaut dans MySQL
-
Reproduire l’erreur lors de l’utilisation de
CURRENT_TIMESTAMP
commeDEFAULT
dans MySQL -
Réorganisez les colonnes de la table pour utiliser
CURRENT_TIMESTAMP
commeDEFAULT
dans MySQL -
Utilisez
DEFAULT 0
pour utiliserCURRENT_TIMESTAMP
commeDEFAULT
dans MySQL -
Utilisez une valeur de temps pour utiliser
CURRENT_TIMESTAMP
commeDEFAULT
dans MySQL
Cet article vous apprend à utiliser CURRENT_TIMESTAMP
comme DEFAULT
dans les versions MySQL inférieures à 5.6.5
. En conséquence, vous pouvez empêcher l’erreur MySQL 1293.
Nos méthodes incluent la réorganisation des colonnes du tableau et l’utilisation de DEFAULT 0
et d’une valeur temporelle.
Reproduire l’erreur lors de l’utilisation de CURRENT_TIMESTAMP
comme DEFAULT
dans MySQL
Reproduisons l’erreur avant de vous montrer comment utiliser CURRENT_TIMESTAMP
comme DEFAULT
. C’est l’erreur que vous obtiendrez lorsque vous essayez d’utiliser CURRENT_TIMESTAMP
comme DEFAULT
.
Pour suivre, procédez comme suit :
-
Téléchargez la version de MySQL inférieure à
5.6.5
. Vous l’obtiendrez dans le cadre de XAMPP 1.8.0, ou d’autres moyens. -
Ouvrez MySQL dans XAMPP, connectez-vous avec
mysql -u root -p
. Vous remarquerez que la version de MySQL est5.5.2a
, elle est donc inférieure à5.6.5
. -
Créez une base de données nommée
just_a_test_db
.
Maintenant, utilisez le SQL suivant pour créer une table site_users
dans la base de données :
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;
Vous obtiendrez une erreur comme indiqué dans l’image suivante :
Réorganisez les colonnes de la table pour utiliser CURRENT_TIMESTAMP
comme DEFAULT
dans MySQL
Vous pouvez utiliser CURRENT_TIMESTAMP
comme DEFAULT
si vous réorganisez les colonnes de la table dans votre requête SQL. La colonne avec un CURRENT_TIMESTAMP
comme DEFAULT
doit venir en premier ; d’autres colonnes avec des valeurs TIMESTAMP
doivent suivre.
Dans le SQL suivant, nous avons réorganisé le SQL et MySQL crée la table :
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;
Sortie dans la console MySQL :
Utilisez DEFAULT 0
pour utiliser CURRENT_TIMESTAMP
comme DEFAULT
dans MySQL
L’utilisation de DEFAULT 0
est une autre option qui vous permettra d’utiliser CURRENT_TIMESTAMP
comme DEFAULT
. Vous l’appliquerez aux colonnes TIMESTAMP
qui n’ont pas de valeur par défaut.
De notre SQL, il s’agit de la colonne date_validated
. Le SQL suivant vous montre comment procéder :
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;
Sortie dans la console MySQL :
Utilisez une valeur de temps pour utiliser CURRENT_TIMESTAMP
comme DEFAULT
dans MySQL
Si la valeur par défaut de TIMESTAMP
est une heure, vous pouvez utiliser CURRENT_TIMESTAMP
comme DEFAULT
sur d’autres colonnes. Cette valeur de temps est 0000-00-00 00:00:00
, et nous l’avons utilisée dans la colonne date_validated
.
Le SQL suivant le montre en action :
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;
Sortie dans la console 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