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
Konvertierung des Zeitformats von Montag auf Sonn...
Diese Frage ist sehr seltsam, deshalb gehe ich di...
1. Herunterladen https://dev.mysql.com/downloads/...
Inhaltsverzeichnis Systemupdate-Konfiguration Änd...
Unter den Anweisungen meines Vorgesetzten übernah...
Die Konfigurationsdatei nginx.conf lautet wie fol...
Zunächst können Sie den Unterschied zwischen den ...
Inhaltsverzeichnis Erste Schritte Datenspeicherun...
Frage Bei der Installation von Docker mithilfe de...
Inhaltsverzeichnis Vorwort 1. Was ist Skalierbark...
Basisbild Das Basisbild hat zwei Bedeutungen: Ist...
1. Linklayout der neuen Site-Startseite 1. Die Pos...
Detailliertes Beispiel für das Datenbankbetriebso...
Deklarieren Sie den Parameternamen, den Typ und d...
Vorwort: Ich habe vor langer Zeit gehört, dass My...