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
Inhaltsverzeichnis 1. RegExp-Objekt 2. Grammatik ...
Problembeschreibung Ein Spring + Angular-Projekt ...
So konfigurieren Sie benutzerdefinierte Pfadalias...
Inhaltsverzeichnis Kombinieren von Lookahead und ...
Werfen wir einen Blick auf den Installationsproze...
Inhaltsverzeichnis Netzwerkkonfiguration anzeigen...
Hexadezimalcodetabelle verschiedener Farben [Teil ...
1. Laden Sie die VMware Workstation 64-Version he...
Inhaltsverzeichnis Routenplaner Hintergrund Erste...
Datenbankanwendungen sind ein unverzichtbarer Bes...
Problembeschreibung: Wenn der SFTP-Host von phpst...
Inhaltsverzeichnis Überblick Erstellen Sie eine T...
01. Befehlsübersicht dirname - entfernt nicht zu ...
Ich hatte nicht vor, diesen Blog zu schreiben, ab...
Inhaltsverzeichnis Dropdown-Feld zur Mehrfachausw...