CURRENT_TIMESTAMP als Standard in MySQL verwenden

  1. Reproduzieren Sie den Fehler bei der Verwendung von CURRENT_TIMESTAMP als DEFAULT in MySQL
  2. Umordnen der Tabellenspalten zur Verwendung von CURRENT_TIMESTAMP als DEFAULT in MySQL
  3. Verwendung von DEFAULT 0 zur Verwendung von CURRENT_TIMESTAMP als DEFAULT in MySQL
  4. Verwenden Sie einen Zeitwert, um CURRENT_TIMESTAMP als DEFAULT in MySQL zu verwenden
CURRENT_TIMESTAMP als Standard in MySQL 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-Version 5.5.2a ist, also weniger als 5.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:

MySQL-Fehler 1293 in MySQL 5.5.25a

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:

Datenbanktabelle nach Neuordnung der Tabellenspalten erfolgreich erstellt

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 von DEFAULT 0 für eine TIMESTAMP-Spalte in MySQL 5.5.25a

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:

Verwenden eines Zeitwerts für eine TIMESTAMP-Spalte in MySQL 5.5.25a

Genießen Sie unsere Tutorials? Abonnieren Sie DelftStack auf YouTube, um uns bei der Erstellung weiterer hochwertiger Videoanleitungen zu unterstützen. Abonnieren
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

Verwandter Artikel - MySQL Timestamp