CURRENT_TIMESTAMP als Standard in MySQL verwenden
-
Reproduzieren Sie den Fehler bei der Verwendung von
CURRENT_TIMESTAMPalsDEFAULTin MySQL -
Umordnen der Tabellenspalten zur Verwendung von
CURRENT_TIMESTAMPalsDEFAULTin MySQL -
Verwendung von
DEFAULT 0zur Verwendung vonCURRENT_TIMESTAMPalsDEFAULTin MySQL -
Verwenden Sie einen Zeitwert, um
CURRENT_TIMESTAMPalsDEFAULTin 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.5herunter. 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 -pan. Sie werden feststellen, dass die MySQL-Version5.5.2aist, 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