CURRENT_TIMESTAMP als Standard in MySQL verwenden
-
Reproduzieren Sie den Fehler bei der Verwendung von
CURRENT_TIMESTAMP
alsDEFAULT
in MySQL -
Umordnen der Tabellenspalten zur Verwendung von
CURRENT_TIMESTAMP
alsDEFAULT
in MySQL -
Verwendung von
DEFAULT 0
zur Verwendung vonCURRENT_TIMESTAMP
alsDEFAULT
in MySQL -
Verwenden Sie einen Zeitwert, um
CURRENT_TIMESTAMP
alsDEFAULT
in MySQL zu verwenden
In diesem Artikel erfahren Sie, wie Sie CURRENT_TIMESTAMP
als DEFAULT
in MySQL-Versionen kleiner als 5.6.5
verwenden. Dadurch können Sie den MySQL-Fehler 1293 verhindern.
Unsere Methoden umfassen die Neuordnung der Tabellenspalten und die Verwendung von DEFAULT 0
und einem Zeitwert.
Reproduzieren Sie den Fehler bei der Verwendung von CURRENT_TIMESTAMP
als DEFAULT
in MySQL
Lassen Sie uns den Fehler reproduzieren, bevor wir Ihnen zeigen, wie Sie CURRENT_TIMESTAMP
als DEFAULT
verwenden. Dies ist der Fehler, den Sie erhalten, wenn Sie versuchen, CURRENT_TIMESTAMP
als DEFAULT
zu verwenden.
Gehen Sie wie folgt vor, um mitzumachen:
-
Laden Sie die MySQL-Version kleiner als
5.6.5
herunter. Sie erhalten dies als Teil von XAMPP 1.8.0 oder auf andere Weise. -
Öffnen Sie MySQL in XAMPP, melden Sie sich mit
mysql -u root -p
an. Sie werden feststellen, dass die MySQL-Version5.5.2a
ist, also weniger als5.6.5
. -
Erstellen Sie eine Datenbank namens
just_a_test_db
.
Verwenden Sie nun die folgende SQL, um eine site_users
-Tabelle in der Datenbank zu erstellen:
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;
Sie erhalten einen Fehler, wie im folgenden Bild zu sehen:
Umordnen der Tabellenspalten zur Verwendung von CURRENT_TIMESTAMP
als DEFAULT
in MySQL
Sie können CURRENT_TIMESTAMP
als DEFAULT
verwenden, wenn Sie die Tabellenspalten in Ihrer SQL-Abfrage neu anordnen. Die Spalte mit einem CURRENT_TIMESTAMP
als DEFAULT
sollte zuerst kommen; andere Spalten mit TIMESTAMP
-Werten sollten folgen.
Im folgenden SQL haben wir das SQL neu geordnet und MySQL erstellt die Tabelle:
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;
Ausgabe in der MySQL-Konsole:
Verwendung von DEFAULT 0
zur Verwendung von CURRENT_TIMESTAMP
als DEFAULT
in MySQL
Die Verwendung von DEFAULT 0
ist eine weitere Option, mit der Sie CURRENT_TIMESTAMP
als DEFAULT
verwenden können. Sie wenden es auf TIMESTAMP
-Spalten an, die keinen Standardwert haben.
Aus unserem SQL ist dies die Spalte date_validated
. Das folgende SQL zeigt Ihnen, wie das geht:
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;
Ausgabe in der MySQL-Konsole:
Verwenden Sie einen Zeitwert, um CURRENT_TIMESTAMP
als DEFAULT
in MySQL zu verwenden
Wenn der Standard von TIMESTAMP
eine Zeit ist, können Sie CURRENT_TIMESTAMP
als DEFAULT
für andere Spalten verwenden. Dieser Zeitwert ist 0000-00-00 00:00:00
, und wir haben ihn in der Spalte date_validated
verwendet.
Das folgende SQL zeigt dies in Aktion:
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;
Ausgabe in der MySQL-Konsole:
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