Existiert die Zeit wirklich? Manche Menschen glauben, dass Zeit lediglich ein vom Menschen erdachtes Konzept und ein Maßstab zur Messung der Veränderung von Dingen sei. Bei Datenbanken geht die Zeit Hand in Hand mit den Daten. Betreten Sie den MySQL-Zeitstrudel. 1. ZeittypfelderMySQL-Zeittypfeld: Folgendes wird leicht übersehen: TIMESTAMP speichert Daten folgendermaßen: MySQL konvertiert TIMESTAMP-Werte zum Speichern von der aktuellen Zeitzone in UTC und zum Abrufen von UTC zurück in die aktuelle Zeitzone. TIMESTAMP und SQL_MODE Kombination sql_mode wirkt sich auch auf den Zeitstempelwert aus: mysql> TABELLE ERSTELLEN ts ( id INTEGER NICHT NULL AUTO_INCREMENT PRIMARY KEY, Spalte TIMESTAMP NICHT NULL ) AUTO_INCREMENT = 1; mysql> VARIABLEN WIE '%sql_mode%' ANZEIGEN; +------------------+---------------------+ | Variablenname | Wert | +------------------+---------------------+ | SQL-Modus | STRICT_TRANS_TABLES | +------------------+---------------------+ mysql> INSERT INTO ts (Spalte) VALUES ('1969-01-01 01:01:10'); FEHLER 1292 (22007): Falscher Datums-/Uhrzeitwert: „1969-01-01 01:01:10“ für Spalte „col“ in Zeile 1 mysql> SETze sql_mode=""; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) mysql> VARIABLEN WIE '%sql_mode%' ANZEIGEN; +---------------+-------+ | Variablenname | Wert | +---------------+-------+ | SQL-Modus | | +---------------+-------+ mysql> INSERT INTO ts (Spalte) VALUES ('1969-01-01 01:01:10'), ('2999-01-01 01:01:10'); Abfrage OK, 2 Zeilen betroffen, 2 Warnungen (0,01 Sek.) Datensätze: 2 Duplikate: 0 Warnungen: 2 mysql> Warnungen anzeigen; +---------+------+------------------------------------------+ | Ebene | Code | Nachricht | +---------+------+------------------------------------------+ | Warnung | 1264 | Wert für Spalte „col“ in Zeile 1 außerhalb des Bereichs | | Warnung | 1264 | Wert für Spalte „col“ in Zeile 2 außerhalb des Bereichs | +---------+------+------------------------------------------+ mysql> AUSWÄHLEN * VON TS; +----+---------------------+ | Ich würde | Spalte | +----+---------------------+ | 1 | 0000-00-00 00:00:00 | | 2 | 0000-00-00 00:00:00 | +----+---------------------+ 2 Zeilen im Satz (0,00 Sek.) Durch die Steuerung des SQL-Modus werden Werte, die das Zeitstempellimit überschreiten, zwar weiterhin eingefügt, allerdings wird die Methode zum Auffüllen von Leerzeichen mit 0 übernommen. 2. expliziter_defaults_for_timestamp-ZeitverarbeitungsmechanismusDie Standardeinstellung ist „Aktiviert“. Ab MySQL 8.0.22 wird jeder Versuch, NULL in eine als TIMESTAMP NOT NULL deklarierte Spalte einzufügen, mit einem Fehler abgelehnt. 1. Wenn explicit_defaults_for_timestamp deaktiviert ist:
2. explicit_defaults_for_timestamp ist aktiviert:
prüfen: TABELLE ERSTELLEN `test1`( id bigint nicht null AUTO_INCREMENT COMMENT 'Primärschlüssel-ID', Name varchar(20) COMMENT 'Primärschlüssel-ID', create_time TIMESTAMP NICHT NULL STANDARD CURRENT_TIMESTAMP KOMMENTAR 'cr time', PRIMÄRSCHLÜSSEL(id) )ENGINE=InnoDB AUTO_INCREMENT=1 ; VARIABLEN WIE „explicit_defaults_for_timestamp“ ANZEIGEN; GLOBAL explizite_Vorgaben für_Zeitstempel festlegen=ON; GLOBAL explizite_Vorgaben für_Zeitstempel festlegen=AUS; INSERT INTO test1(id,name,erstellungszeit) VALUES(1,'Kit',NULL); 3. MySQL-SystemkonfigurationZu den systembezogenen Ereignisparametern gehören 3: mysql>globale Variablen anzeigen, bei denen der Variablenname wie „%time_zone%“ oder der Variablenname wie „log_timestamp%“ ist; +------------------+--------+ | Variablenname | Wert | +------------------+--------+ | Systemzeitzone | CST | | Zeitzone | SYSTEM | | log_zeitstempel | UTC | +------------------+--------+ 3 Zeilen im Satz (0,00 Sek.) 1. Systemzeitzone: Beim Start des Servers versucht dieser automatisch die Zeitzone des Hosts zu ermitteln und verwendet diese zum Einstellen der Systemvariable system_time_zone. Der Wert ändert sich danach nicht mehr. 2.time_zone: Die vollständige time_zone gibt die Zeitzone an, in der der Server derzeit läuft. Der anfängliche Zeitzonenwert ist „SYSTEM“, was bedeutet, dass die Server-Zeitzone mit der System-Zeitzone übereinstimmt.
Hinweis: MySQL bietet auch eine Methode zum Importieren von Zeitzonen in die MySQL-Systembibliothek. Verwenden Sie das Programm mysql_tzinfo_to_sql, um die Zeitzoneninformationen in /usr/share/zoneinfom zu laden. mysql> SELECT COUNT(*) FROM mysql.Zeitzonenname; +----------+ | ANZAHL(*) | +----------+ | 0 | +----------+ ##mysql_tzinfo_to_sql-Tool zum Importieren von Zeitzonenwerten shell>mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql mysql> SELECT COUNT(*) FROM mysql.Zeitzonenname; +----------+ | ANZAHL(*) | +----------+ | 1780 | +----------+ 3.log_timestamps Diese Variable steuert die Zeitzone der Zeitstempel in Nachrichten, die in das Fehlerprotokoll geschrieben werden, sowie in allgemeinen Abfrageprotokollen und langsamen Abfrageprotokollnachrichten, die in Dateien geschrieben werden. Die Zeitzone, in die die Tabellen „allgemeines Abfrageprotokoll“ und „langsames Abfrageprotokoll“ geschrieben werden (mysql.general_log und mysql.slow_log), wird davon nicht beeinflusst. Erlaubte log_timestamps-Werte sind UTC (Standard) und SYSTEM (lokale Systemzeitzone) Hinweis: UTC steht im Allgemeinen für die koordinierte Weltzeit. Die koordinierte Weltzeit, auch bekannt als Welteinheitszeit, Weltstandardzeit, internationale koordinierte Zeit, ist UTC + 8 Stunden = China-Zeit Natürlich muss der Wert für eine bessere Verwaltung mit der Aufzeichnungszeit des Systems übereinstimmen. #Stellen Sie die Zeitzone ein und ändern Sie sie in die 8. Ostzone. SET GLOBAL time_zone = '+8:00'; Anregung: MySQL-Konfigurationsdatei my.cnf [mysqld] log_timestamps=SYSTEM Standardzeitzone = '+8:00' mysql>globale Variablen anzeigen, bei denen der Variablenname wie „%time_zone%“ oder der Variablenname wie „log_timestamp%“ ist; +------------------+--------+ | Variablenname | Wert | +------------------+--------+ | log_zeitstempel | SYSTEM | | Systemzeitzone | CST | | Zeitzone | +08:00 | +------------------+--------+ ZusammenfassenErfahren Sie, wie Sie die Zeit in MySQL anhand von Zeittypen, Parametern und Systemzeitzonen einstellen und verwenden. Ändern Sie insbesondere den SQL-Modus nicht einfach ohne besondere Anforderungen. Dies ist das Ende dieses Artikels über Vorsichtsmaßnahmen bei der MySQL-Zeiteinstellung. Weitere relevante Vorsichtsmaßnahmen bei der MySQL-Zeiteinstellung finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Perfekte Lösung für das Zeitzonenproblem des Docker Alpine-Image
>>: Implementierungscode zum Hinzufügen eines Schrägstrichs zum Vue-Elementheaders
Wie in der Abbildung gezeigt: Mit einer einzelnen ...
Dieser Artikel untersucht die ES6-for...of-Schlei...
Arbeitsmodus von vim einstellen (vorübergehend) :...
Auswirkungen der Hintergrundposition auf die Anze...
/******************** * Virtuelles Dateisystem VF...
Warum brauchen wir Master-Slave-Replikation? 1. I...
1. Herunterladen Zunächst möchte ich einen inländ...
Die Datenbankdaten der Projekttestumgebung sind v...
Als ich kürzlich kazam in Ubuntu 20.04 zur Aufzei...
<br />Beim Textdesign konzentrieren wir uns ...
1. Zuerst müssen Sie den Zielselektor von CSS3 ve...
Docker ist ein Verwaltungstool, das Prozesse als ...
Inhaltsverzeichnis Überblick 1. Hook-Aufrufreihen...
In diesem Artikelbeispiel wird der spezifische Co...
In diesem Artikelbeispiel wird der spezifische JS...