Beim Versuch, einen Zeitstempel in eine MySQL-Datenbank einzufügen, wird folgende Fehlermeldung angezeigt: mysql> in alarm_service-Werte einfügen (6, '1970-01-01 08:00:00'); FEHLER 1292 (22007): Falscher Datums-/Uhrzeitwert: „1970-01-01 08:00:00“ für Spalte „Zeit“ in Zeile 1 # Zeigen Sie die Tabellenstruktur an mysql> show create table alarm_service; +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Tabelle | Tabelle erstellen | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | alarm_service | TABELLE `alarm_service` ERSTELLEN ( `id` int(11) NICHT NULL AUTO_INCREMENT, `Zeit` Zeitstempel NICHT NULL STANDARD CURRENT_TIMESTAMP BEI UPDATE CURRENT_TIMESTAMP, PRIMÄRSCHLÜSSEL (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 Zeile im Satz (0,00 Sek.) Wir können sehen, dass die Fehlermeldung angibt, dass der Zeitwert falsch ist, aber dies ist offensichtlich ein gültiger Zeitpunkt. Nach der Suche in den Daten habe ich festgestellt, dass der Grund darin liegt, dass in Die Lösung ist:
Nachfolgend erläutern wir Ihnen die entsprechenden Inhalte im Detail. 1. MySQL-ZeittypMySQL-Zeittypen werden in drei Typen unterteilt :
Gleichzeitig unterstützen Sowohl Beim Typ 2. Überprüfen Sie die Zeitzonemysql> Variablen wie „%zone%“ anzeigen; +------------------+--------+ | Variablenname | Wert | +------------------+--------+ | Systemzeitzone | CST | | Zeitzone | SYSTEM | +------------------+--------+ Sie können sehen, dass die aktuelle Zeitzone SYSTEM ist, was mit dem Betriebssystem übereinstimmt. Die Systemzeitzone ist CST (China Standard Time). Sie können auch sehen, dass die Systemzeit Ost 8 (+0800) ist: $ Datum -R Di., 23. April 2019 11:22:47 +0800 Wenn wir also 3. Unzulässiger Zeitwert Bei unzulässigen Zeitwerten konvertiert MySQL diese in entsprechende Werte für unterschiedliche Zeittypen: Wenn die Monate beispielsweise Januar bis Dezember sind und Sie versuchen, 4. Strenger ModusWenn wir einen ungültigen Zeitwert einfügen, wird dieser korrigiert, im strikten Modus werden die Daten jedoch nicht eingefügt und stattdessen ein Fehler gemeldet: FEHLER 1292 (22007): Falscher Datums-/Uhrzeitwert: „1970-01-01 08:00:00“ für Spalte „Zeit“ in Zeile 1 Wir können das Verhalten von mysql> Variablen wie „%sql_mode%“ anzeigen; +----------------------------+--------------------------------------------+ | Variablenname | Wert | +----------------------------+--------------------------------------------+ | | SQL-Modus | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION | +----------------------------+--------------------------------------------+ In diesem Modus werden ungültige Daten als Fehler gemeldet. Wir können den Modus auf mysql> setze Sitzungs-SQL-Modus = 'ALLOW_INVALID_DATES'; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) mysql> Variablen wie „%sql_mode%“ anzeigen; +------------------+---------------------+ | Variablenname | Wert | +------------------+---------------------+ | SQL-Modus | ALLOW_INVALID_DATES | +------------------+---------------------+ 1 Zeile im Satz (0,00 Sek.) In diesem Modus wird das Datum nicht mehr vollständig auf Gültigkeit geprüft, lediglich der Monat wird auf einen Wert im Bereich 1-12 und der Tag auf einen Wert im Bereich 1-31 geprüft. Dies ist bei der Verarbeitung von Benutzereingaben geeignet, allerdings ist dieser Modus nur für Bei ungültigen Werten wird bei aktiviertem Modus ein Fehler gemeldet, bei deaktiviertem Modus wird auf mysql> in alarm_service-Werte einfügen (7, '1970-01-01 08:00:00'); Abfrage OK, 1 Zeile betroffen, 1 Warnung (0,00 Sek.) Zusammenfassen: Für dieses Problem gibt es zwei Lösungen:
5. Fallzusammenfassung Überprüfen Sie den Grund. Sie finden heraus, dass er wie folgt eingestellt ist: # Sehen Sie sich die Anweisung zum Erstellen der Tabelle CREATE TABLE `dimensionsConf` an ( `id` int(11) NICHT NULL AUTO_INCREMENT, `createTime` Datum/Uhrzeit STANDARD CURRENT_TIMESTAMP, ) ENGINE=InnoDB AUTO_INCREMENT=178 DEFAULT CHARSET=utf8; # Datenbankversion anzeigen $mysql --version mysql Ver 14.14 Distrib 5.1.30, für unknown-linux-gnu (x86_64) mit EditLine-Wrapper Dies ist das Ende dieses Artikels über MySQL-Zeittypen und -Modi. Weitere Informationen zu MySQL-Zeittypen und -Modi finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Beispiele für die Verwendung des Li-Tags in HTML
>>: TypeScript-Dekorator-Definition
Docker-Attach-Befehl docker attach [options] 容器st...
Docker Swarm ist ein von Docker entwickelter Cont...
Docker Compose kann die Orchestrierung von Docker...
Inhaltsverzeichnis Vorwort 1. Vorbereitung 2. Ins...
I. Überblick Beim Schreiben von HTML-Vorlagen wer...
Inhaltsverzeichnis Überblick Definieren von Metho...
<br />In früheren Tutorials von 123WORDPRESS...
Inhaltsverzeichnis Werkzeug Installieren Sie das ...
Inhaltsverzeichnis Text LOCK-Parameter ALGORITHMU...
Verwenden Sie die Ereignisdelegierung, um die Mes...
Der Vorgang der Installation der MySQL-Datenbank ...
Dieser Artikel zeigt Ihnen eine verschiebbare Fot...
Inhaltsverzeichnis Konfigurationsanalyse Dienstle...
Heute werden wir Origami-Flugzeuge basteln (die A...
In diesem Artikelbeispiel wird der spezifische Co...