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 als5.6.5herunter. Sie erhalten dies als Teil von XAMPP 1.8.0 oder auf andere Weise.
- 
Öffnen Sie MySQL in XAMPP, melden Sie sich mitmysql -u root -pan. Sie werden feststellen, dass die MySQL-Version5.5.2aist, also weniger als5.6.5.
- 
Erstellen Sie eine Datenbank namensjust_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