CURRENT_TIMESTAMP als Standard in MySQL verwenden

Habdul Hazeez 15 Februar 2024
  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

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